字符串的查找删除
题目描述
给定一个短字符串(不含空格),再给定若干字符串,在这些字符串中删除所含有的短字符串。
输入
输入只有1组数据。
输入一个短字符串(不含空格),再输入若干字符串直到文件结束为止。
输入一个短字符串(不含空格),再输入若干字符串直到文件结束为止。
输出
删除输入的短字符串(不区分大小写)并去掉空格,输出。
样例输入 Copy
in
#include
int main()
{
printf(" Hi ");
}
样例输出 Copy
#clude
tma()
{
prtf("Hi");
}
提示
注:将字符串中的In、IN、iN、in删除。
思路:
题目中删除字符要求不分大小写,则可将先将原字符存储在二维数组,再讲字母全部转化为小写进行比较。
判断逻辑:遍历字符串,某字符与短字符第一个字符相同;在判断下一位字符是否相同,直至完全相同,完全相同则跳过;
#include<bits/stdc++.h> using namespace std; int main() { string s1; cin >> s1; for (int i = 0; i < s1.size(); i++) { s1[i] = tolower(s1[i]); } getchar(); string a, b; while(getline(cin, a)) { b = a; for (int i = 0; i < b.size(); i++) { b[i] = tolower(b[i]); } int t = b.find(s1, 0); while (t != string::npos) { a.erase(t, s1.size()); b.erase(t, s1.size()); t = b.find(s1, 0); } t = b.find(" ", 0); while (t != string::npos) { a.erase(t, 1); b.erase(t, 1); t = b.find(" ", 0); } cout << a << endl; } return 0; }