如何解决If 语句只为一个字符串值提供 false
嘿伙计们,我一直在尝试使用代码来提高我的编码技能。我遇到了一个“简单”的问题,正在尝试我自己的解决方案。在这样做的过程中,我发现了一些令人惊讶的事情。
我的 if 语句为 "c" 字符串提供了一个假值,但适用于所有其他字符串,我尝试检查其他字符串值并且它们有效。我的代码为此语句提供错误结果的任何原因?
这是我的代码
string allowed ="abc";
vector<string> words =
{
"a","b","c","ab","ac","bc","abc"
};
int count = 0;
bool contains;
for(string w: words)
{
for(auto c: w)
{
if(allowed.find(c) <= w.size())
{
contains = true;
}else
{
contains = false;
break;
}
}
if(contains)
{
count++;
}
}
return count;
我的问题是我的代码为“c”字符串提供错误结果的原因是什么? 或者我的 if else 语句有问题。
我该如何解决这个问题?
非常感谢所有帮助过我的人!
解决方法
if(allowed.find(c) <= w.size())
这会在字符串 allowed
中搜索字符 c
,如果找到,则将该字符的返回索引与字符串 w
的长度进行比较。所以当w
比allowed
短并且在字符串中找到的字符晚于w
的长度时,即使找到它也会返回false。
你可能打算写
if(allowed.find(c) < allowed.size())
甚至更好
if(allowed.find(c) != string::npos)
使意图更清晰。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。