L1-8 估值一亿的AI核心代码

在家写了写2019年天梯赛的题,被这一道字符串题弄得心态爆炸,自己写了个纯模拟只得了13分,也不想调试了,就去网上看了一下各路大佬写的代码。

我只是个大佬博客的搬运工~

先上题目:

 

 

 

 在看各路大佬得解题方法时,发现了个处理字符串问题的好东西,那就是正则表达式,但是有些比赛不支持。

关于正则表达式的介绍,可以看这位大佬的博客:

https://blog.csdn.net/weixin_42449444/article/details/89022191

解题方法看的是这位大佬的博客:

https://blog.csdn.net/xiji333/article/details/104494088

然后自己敲了一遍,写了一些注释:

 1 #include<iostream>
 2 #include<regex>
 3 using namespace std;
 4 
 5 int main(){
 6     int n;
 7     cin>>n;
 8     getchar();//下面输入字符串的方式是getline,以换行符作为结尾,需要将n输入后的换行符先消耗 
 9     while(n--){
10         string s;
11         getline(cin,s);
12         cout<<s<<endl;
13         
14         s=regex_replace(s,regex(" +")," ");//将多个空格用一个空格替换 
15         if(s[0]==' ') s.erase(0,1);//若第一个字符是空格,就删除 
16         if(s[s.size()-1]==' ') s.erase(s.size()-1,1);//若最后一个字符是空格,就删除 
17         
18         //删除标点符号前面的空格 
19         s=regex_replace(s,regex(" \\?"),"?");//?和.都是特殊字符,需要加上\ 
20         s=regex_replace(s,regex(" \\."),".");
21         s=regex_replace(s,regex(" !"),"!");
22         s=regex_replace(s,regex(" ,"),",");
23         s=regex_replace(s,regex(" '"),"'");
24         s=regex_replace(s,regex(" ;"),";");
25         
26         //将大写字母(除I)换成小写字母 
27         for(int i=0;i<s.size();i++){
28             if(s[i]>='A' && s[i]<='Z' && s[i]!='I') s[i]=s[i]+'a'-'A';
29         }
30         
31         //这里先换成_I 是因为下面还有将单独的I换成you的命令,这里整体换的地方需要做个标记,下面不用做替换 
32         s=regex_replace(s,regex("\\bcan you\\b"),"_I can"); 
33         s=regex_replace(s,regex("\\bcould you\\b"),"_I could");
34         
35         s=regex_replace(s,regex("\\bI\\b"),"you");
36         s=regex_replace(s,regex("\\bme\\b"),"you");
37         s=regex_replace(s,regex("_I\\b"),"I");//将上面整体替换的标记部分还原 
38         
39         s=regex_replace(s,regex("\\?"),"!");
40         
41         cout<<"AI: "<<s<<endl;
42     }
43     
44     return 0;
45 } 

其中,用到了一个转义字符\b,是用来匹配字母或数字边界,\w是字母数字。关于\b的解释可以参考这位大佬的博客:

https://www.cnblogs.com/tnt-33/p/10676473.html

 

不用正则表达式的做法可以参考这个大佬的博客:

https://blog.csdn.net/qq_41829380/article/details/88919000

 

我只是个大佬们博客的搬运工~(整理一下,方便自己以后看嘻嘻)

 

posted @ 2020-03-25 23:03  lucky99  阅读(663)  评论(0编辑  收藏  举报