Warum kann ich das nicht verwenden?Über den Beendigungszustand der For-Schleife
Ich habe Fehler, wenn haystack = "abb" Nadel = "abaaa".
Es hat keinen Fehler, wenn ich benutze:
int diff=haystack.length()-needle.length()+1;
for(int i=0; i<diff; i++)
Dies ist die Funktion:
int strStr(string haystack, string needle){
if(needle.length()==0)
return 0;
if(haystack.length()==0)// || haystack.length() < needle.length())
return -1;
int diff=haystack.length()-needle.length()+1;
for(int i=0; i<(haystack.length()-needle.length()+1); i++){
//for(int i=0; i<diff; i++){
// printf("%d %d\n",haystack.length(),needle.length());
for(int j=0; j<needle.length(); j++){
if(haystack.at(i+j)!=needle.at(j))
break;
if(j==needle.length()-1)
return i;
}
}
return -1;
}
'std :: string.length()' gibt einen Wert vom Typ 'size_t', die nicht signiert ist. Die Subtraktion führt dann zu einem vorzeichenlosen Integer-Überlauf – IGarFieldI
@IGarFieldl Got it. Vielen Dank! – dykw