字符串个数匹配问题

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>

using namespace std;

string delNotChar(string str) {

   int len = str.size();

   string b;

   for (int i = 0; i <= len; i++) {

       if ((str[i] >= 'a' && str[i] <= 'z') || str[i] == ' ')

           b.push_back(str[i]);

       else

           b.push_back(' ');

   }

   return b;

}

int main() {

   int count = 0;//匹配次数

   string T;//原串

   string P;//模式串

   getline(cin, T);

   getline(cin, P);

   //换小写

   for (int i = 0; i <= T.size(); i++)

       T[i] = tolower(T[i]);

   for (int i = 0; i <= P.size(); i++)

       P[i] = tolower(P[i]);

   //去除非字母非空格字符

   T=delNotChar(T);

   vector<string> strArray;

   string word;

   stringstream input(T);

   while (input >> word)

       strArray.push_back(word);

   for (int i = 0; i < strArray.size(); i++) {

       if (strArray[i].find(P, 0) != string::npos)

           count++;

   }

   cout << count;

   system("pause");

   return 0;

}


上一篇:MySQL之where语句


下一篇:MySQL语句的执行顺序