发现了一个很坑的东西。
看下面两份代码:
//code1 char s[N]; for(int i=0;i<strlen(s);i++)Do();
//code2 char s[N]; for(int i=0;s[i];i++)Do();
意义都是循环一遍字符串。但是!前者的复杂度是O(N2),后者是O(N)的。
因为那个strlen()函数时间复杂度是O(N)的!!
所以如果要用的话一定要先提出来放前面len=strlen(s)。千万不要像代码1那样!!
惨案
改后1984ms->85ms