c++中字符串遍历的一些问题
对于字符串str,遍历它时,如果采用如下代码遍历:
for(int i=0;i<strlen(str);i++){
}
运行效率会比下面这种方式低很多:
int len=strlen(str);
for(int i=0;i<len;i++){
}
究其原因,第一种方式,i每自增一次,都会调用一下strlen()函数并与i进行比较,而第二种方式则只会调用一次strlen()函数,在大多数题目,混用两种遍历方式都不会有太大的问题,但是某些题目会被卡常。
推荐用第三种方式进行遍历:
for(int i=0;str[i];i++){
}
简洁优美效率高。
strlen写for里面很容易超时,每次调用都是O(n),直接一个for变O(n^2)
是这样的,之前调了老半天不知道为啥会tle