7-2 子字符串个数匹配
分别输入两个字符串A和B,A由多个小字符串组成(中间由非字母隔开),B是由字母组成的字符串。求出A中包含B的小字符串的个数(详细看样例),并且输出它。(不区分大小写)
输入格式:
先输入字符串A,由回车结束。然后输入字符串B。
输出格式:
输出A中包含B字符串的个数、
输入样例:
在这里给出一组输入。例如:
aaBbc4./ewfeAbc wefW%!%&aAbc++0 4Abccabc
aBc
输出样例:
在这里给出相应的输出。例如:
3
解释:
A可以看成:aabbc ewfeabc wefw aabc abccabc小字符串组成的字符串。
#include <iostream>
#include <string>
#include <vector>
#include<sstream>
usingnamespacestd;
stringdelNotChar(stringstr) {
intlen=str.size();
stringb;
for (inti=0; i<=len; i++) {
if ((str[i] >='a'&&str[i] <='z') ||str[i] ==' ')
b.push_back(str[i]);
else
b.push_back(' ');
}
returnb;
}
intmain() {
intcount=0;//匹配次数
stringT;//原串
stringP;//模式串
getline(cin, T);
getline(cin, P);
//换小写
for (inti=0; i<=T.size(); i++)
T[i] =tolower(T[i]);
for (inti=0; i<=P.size(); i++)
P[i] =tolower(P[i]);
//去除非字母非空格字符
T=delNotChar(T);
vector<string>strArray;
stringword;
stringstreaminput(T);
while (input>>word)
strArray.push_back(word);
for (inti=0; i<strArray.size(); i++) {
if (strArray[i].find(P, 0) !=string::npos)
count++;
}
cout<<count;
system("pause");
return0;
}