Мне нужно написать функцию, которая возвращает «1», если в строке 3 или более одинаковых буквы в двух строках.
Функция, которую я написал, возвращает «1», несмотря ни на что.
Я попытался распечатать, какие буквы он находит аналогичными, и обнаружил, что компилятор считает, что после окончания первого из них он совпадает со второй строкой. Если я пытаюсь распечатать str1, вывод "qwe". Но если я напечатаю str1 [4], вывод будет "u"
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
int Similar(char* str1, char* str2) {
int i = 0, j = 0;
for (i = 0; i < strlen(str1) + strlen(str2); i++) {
for (j = 0; j < strlen(str1) + strlen(str2); j++) {
if ((str1[i] == str2[j]) && (str1[i + 1] == str2[j + 1]) &&
(str1[i + 2] == str2[j + 2])) {
cout << str1[i] << " <1 2>" << str2[j]
<< endl; // this is just for checking
cout << str1[i + 1] << " <1 2>" << str2[j + 1]
<< endl; // this is just for checking
cout << str1[i + 2] << " <1 2>" << str2[j + 2]
<< endl; // this is just for checking
cout << i << " <1 2>" << j << endl; // this is just for checking
return 1;
}
}
}
return 0;
}
int main() {
int size = 256;
char str1[size] = {"qwe"}, str2[size] = {"uilo"};
cout << Similar(str1, str2) << endl;
}
Вывод:
u<1 2>u
i<1 2>l
l<1 2>l
4<1 2>0
1