【发布时间】:2012-09-03 03:39:26
【问题描述】:
int foo(char *str)
{
char *p = str;
while (p && *p!='\0' &&
((*p >= 'a' && *p <= 'z')
|| (*p >= 'A' && *p <= 'Z') || *p == '@')) {
p++;
}
return p-str;
}
上述复杂的while 语句的时间和空间复杂度是多少。它是否取决于 while encloser 中的语句
while (p && *p!='\0' && ((*p >= 'a' && *p <= 'z') || (*p >= 'A' && *p <= 'Z') || *p == '@'))
或仅在while 正文上
while(){
//body statements
p++;
}
如上。它还取决于&& 或|| 的短路。
【问题讨论】:
-
如果我是你,我会少担心性能,多担心可读性 :-) 可能还有可移植性——不是每个人都使用 ASCII。
-
@paxdiablo 不正确 - 不是每个人都使用 ASCII :-) 你为什么认为他不使用 - 例如 EBCDIC 保证 >=
-
大型机 (z/OS) 使用 EBCDIC,甚至用于它们的 UNIX 子系统。并且 A-Z 在 EBCDIC 中不连续。 ISO C 标准仅保证
0-9范围的连续性 (??)。 -
Right so char='A'
-
C 标准只保证 0
标签: c time-complexity