Почему первый и второй код дают разный результат:
#include <bits/stdc++.h>
using namespace std;
int occ(string src, string sub)
{
int j = 0, p = 0;
while ((p = src.find(sub, p)) != src.npos ) {
++j;
++p;
}
return j;
}
main()
{
string s;
cin >> s;
int l, r;
cin >> l >> r;
string res = s.assign(s, l-1, r-l+1);
int col = occ(s, res);
cout << col;
}
Тут l = 2, r = 2, и по логике res = "a";
Но тут почему то выводит 1. А в нижнем коде всё работает правильно:
#include <bits/stdc++.h>
using namespace std;
int occ(string src, string sub)
{
int j = 0, p = 0;
while ((p = src.find(sub, p)) != src.npos ) {
++j;
++p;
}
return j;
}
main()
{
string s;
cin >> s;
int l, r;
cin >> l >> r;
string res = "a";
int col = occ(s, res);
cout << col;
}
На вход подаётся:
s = "aabbbaabba"
l = 2
r = 2