【发布时间】:2021-09-14 07:51:01
【问题描述】:
我必须将字符串的第一个字母与 C++ 中字符串的其他字母进行比较 例如:在“bsadasdaddgkoj”中 我必须将 b 即第一个字母与所有其他字母进行比较,看看它是否按字母顺序更小 但我必须非常快地做到这一点
vector<string> possibleChanges(vector<string> usernames) {
int n=usernames.size();
vector<string> answers(n);
for(int i=0;i<n;i++) {
for(int j=1;j<usernames[i].size();j++) {
if(usernames[i][0] > usernames[i][j]){
answers[i] = "YES";
break;
}
}
if(answers[i]!="YES") answers[i]="NO";
}
return answers;
}
到目前为止,我已经尝试过了,但它确实很慢。
【问题讨论】:
-
有什么理由使用
std::string而不是bool? -
你通过复制传递你的
std::vector...改用 const 引用。 -
您是否启用了编译器优化? “真的很慢”有多慢?
-
如果您使用
std::vector<bool>作为答案,您可以使用向量轻松检查代码,打印"YES"或"NO"。然后您可以将向量初始化为全部为假,并且仅在usernames[i][0] > usernames[i][j检查中设置为真。并删除所示代码中的第二个if。为了获得更高的运行时效率,您可以使用std::vector<int>作为答案。 -
我很确定瓶颈不在比较中,而是在您的额外副本和/或字符串使用中。你分析过你的代码吗?