-
输入
- The first line consist only one integer N, indicates N cases follows. In each case, there are two lines, the first line gives the string A, length (A) <= 10, and the second line gives the string B, length (B) <= 1000. And it is guaranteed that B is always longer than A. 输出
- For each case, output a single line consist a single integer, tells how many times do B appears as a substring of A.
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s1, s2;
int n;
cin >> n;
while (n--)
{
cin >> s1 >> s2;
unsigned int m = s2.find(s1, 0);
int num = 0;
while (m != string::npos)
{
num++;
m = s2.find(s1, m + 1);
}
cout << num << endl;
}
}
查找(find) 语法: size_type find( const basic_string &str, size_type index ); size_type find( const char *str, size_type index ); size_type find( const char *str, size_type index, size_type length ); size_type find( char ch, size_type index ); find()函数: 返回str在字符串中第一次出现的位置(从index开始查找)。如果没找到则返回string::npos, 返回str在字符串中第一次出现的位置(从index开始查找,长度为length)。如果没找到就返回string::npos, 返回字符ch在字符串中第一次出现的位置(从index开始查找)。如果没找到就返回string::npos 例如, string str1( "Alpha Beta Gamma Delta" ); unsigned int loc = str1.find( "Omega", 0 ); if( loc != string::npos ) cout << "Found Omega at " << loc << endl; else cout << "Didn't find Omega" << endl;