首页 > 其他 > 详细

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

时间:2020-03-26 00:07:10      阅读:135      评论:0      收藏:0      [点我收藏+]

在家写了写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

 

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

 

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

原文:https://www.cnblogs.com/program-ai-cv-ml-se-fighting/p/12570966.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!