码迷,mamicode.com
首页 > 其他好文 > 详细

ccf 201409-3 字符串匹配(toupper,tolower)

时间:2018-03-10 16:06:04      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:temp   空格   back   for   文字   cst   大写   cstring   cout   

 ccf 201409-3 字符串匹配(toupper,tolower)

问题描述
  给出一个字符串和多行文字,在这些文字中找到字符串出现的那些行。你的程序还需支持大小写敏感选项:当选项打开时,表示同一个字母的大写和小写看作不同的字符;当选项关闭时,表示同一个字母的大写和小写看作相同的字符。
输入格式
  输入的第一行包含一个字符串S,由大小写英文字母组成。
  第二行包含一个数字,表示大小写敏感的选项,当数字为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 }

技术分享图片

 

ccf 201409-3 字符串匹配(toupper,tolower)

标签:temp   空格   back   for   文字   cst   大写   cstring   cout   

原文地址:https://www.cnblogs.com/yxh-amysear/p/8538813.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!