我正在尝试解决一个小问题。我有两个字符串。 s1
和 s2
。我希望我的函数返回 s1
的第一个索引,该索引具有字符串 s2
中不存在的字符。这是我的代码。
int cad_nenhum_dos (char s1[], char s2[]){
int i,j;
for (i=0;s1[i]!='\0';i++)
{
for (j=0;s2[j]!='\0';j++)
if (s1[i]!=s2[j]) return i;
}
return -1;
}
如果我运行 s1="hello"
s2="hellm"
,结果应该是索引 4
,因为 s1 [4]='o'
和 "o"
不存在于 s2
中...但我总是得到 0
时我运行这个。如果字符串相同,-1
可以正常工作。
我做错了什么?
问候
最佳答案
在你的内部循环中,当你发现一个相同的字符时,你需要跳出——因为当第二个字符串中有任何不同的字符时,你就会返回,即使一个更早的字符一个是一样的。你想要类似的东西
for (j=0;s2[j]!='\0';j++)
if (s1[i]==s2[j]) break;
if (s2[j]==0)
return i;
即当您遍历了第二个字符串的整个 而没有找到该字符时,您想返回第一个字符串的第 i
个字符。
关于c++ - 代码没有返回正确的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23034198/