0
20
18
07
为了账号安全,请及时绑定邮箱和手机立即绑定

这段代码的性能高在哪里了?

这段代码的性能高在哪里了?

莫回无 2019-03-22 19:14:43
代码1:bool judge(string*strs , int* positions , int n , int k){    string s ;    for(int i=0 ; i<n  ;i++)        s+=strs[positions[i]] ;    string tmp = s ;    int count = 1 ;    for(int i=1 ; i<(s.length()/2+1) ; i++)    {        tmp = tmp.substr(1) + tmp[0] ;        if(tmp == s)        {             count = s.length()/(i) ;             break ;        }    }    return count == k ;}代码2:bool judge(string*strs , int* positions , int n , int k){    string str = "" ;        for(int i=0 ; i<n  ;i++)        str+=strs[positions[i]] ;    int count = 1 ;    int length = str.length() ;    for(int offset=1 ; offset<=(length/2+1) ; offset++)    {        int start = 0 ;        int offStart = offset ;        bool flag = true ;        for( ; start<length ; )        {            if(str[start] == str[offStart])            {                start++ ;                offStart = (offStart+1)%length ;            }            else            {                flag = false ;                break ;            }        }        if(flag)        {            count = length/offset ;            break ;        }    }    return (count == k) ;}这两段代码中第一段是我在网上AC一道题的时候参考的, 第二段是我自己写的, 作用是用于比较一个字符串偏移若干位之后是否和原串相同.第一段就可以ac, 第二段就运行超时了.我想知道的是第一段代码的性能高在哪里了?//我主要写的代码是java的, 用java ac不过, 才切C++写...对C++不是很熟练
查看完整描述

1 回答

没有找到匹配的内容?试试慕课网站内搜索吧

添加回答

代码语言

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号