我的算法不是很强。函数有两个版本,如果传递的字符串中有任何大写字母,则返回 首先不检查每次迭代的条件。第一次出现大写字母后第二次结束 哪个更快一般?
bool isAnyCapLetters(const std::string &s) {
int flag = 0;
for (auto el : s)
flag += isupper(el);
return static_cast<bool>(flag);
}
bool isAnyCapLetters(const std::string &s) {
for (auto el : s)
if (isupper(el)) return true;
return false;
}
答案 0 :(得分:3)
第二个提前返回,对于以大写字母开头的长字符串会更快。
答案 1 :(得分:3)
如果你有一个像This_is_a_useless_but_not_so_very_short_string_whooptifriggindoo
这样的字符串,那么第一个函数将循环遍历所有的字符,并且必须在结尾处进行转换。第二个函数将看到第一个char是大写的,并且将立即返回而不进行任何强制转换。因此第二个功能会更快。