ccf 201409-3 字符串匹配(toupper,tolower)
问题描述
给出一个字符串和多行文字,在这些文字中找到字符串出现的那些行。你的程序还需支持大小写敏感选项:当选项打开时,表示同一个字母的大写和小写看作不同的字符;当选项关闭时,表示同一个字母的大写和小写看作相同的字符。
输入格式
输入的第一行包含一个字符串S,由大小写英文字母组成。
第二行包含一个数字,表示大小写敏感的选项,当数字为0时表示大小写不敏感,当数字为1时表示大小写敏感。
第三行包含一个整数n,表示给出的文字的行数。
接下来n行,每行包含一个字符串,字符串由大小写英文字母组成,不含空格和其他字符。
第二行包含一个数字,表示大小写敏感的选项,当数字为0时表示大小写不敏感,当数字为1时表示大小写敏感。
第三行包含一个整数n,表示给出的文字的行数。
接下来n行,每行包含一个字符串,字符串由大小写英文字母组成,不含空格和其他字符。
toupper,tolower
地球人都知道 C++ 的 string 没有 toupper ,好在这不是个大问题,因为我们有 STL 算法:
string s("heLLo");
transform(s.begin(), s.end(), s.begin(), ::toupper);
cout << s << endl;
transform(s.begin(), s.end(), s.begin(), ::tolower);
cout << s << endl;
transform的头文件为algorithm
1 #include<iostream> 2 #include<cstring> 3 #include<vector> 4 #include<stdio.h> 5 #include<algorithm> 6 using namespace std; 7 vector<string> ans; 8 int main() 9 { 10 string aim; 11 cin>>aim; 12 int type,n; 13 cin>>type>>n; 14 getchar(); 15 if(type == 1)//大小写敏感 16 { 17 for(int i=0;i<n;i++) 18 { 19 string str; 20 getline(cin,str); 21 if(str.find(aim) != -1) 22 ans.push_back(str); 23 } 24 } 25 else { 26 transform(aim.begin(),aim.end(),aim.begin(),::tolower); 27 for(int i=0;i<n;i++) 28 { 29 30 string temp; 31 getline(cin,temp); 32 string str = temp; 33 transform(str.begin(),str.end(),str.begin(),::tolower); 34 if(str.find(aim) != -1) 35 ans.push_back(temp); 36 } 37 } 38 for(int i=0;i<ans.size();i++) 39 cout<<ans[i]<<endl; 40 return 0; 41 }