char s[100005];
scanf("%s", s);
for (int i = 0; i < strlen(s); i++) {
// 逐字符处理
}
对这段代码的说法,正确的是( )。
- A. 没有问题:strlen 是 O(1),放循环条件里无所谓
- B. 编译错误:strlen 不允许出现在循环条件中
- C. 没有问题:编译器会自动把 strlen 提到循环外只算一次
- D. strlen 每次调用都从头数到 '\0'(O(n)),放进循环条件整体退化成 O(n 的平方)——应先写 int len = strlen(s)