当前位置:   article > 正文

转载 PTA 题目 L1-064 估值一亿的AI核心代码 (20分)_c语言pat基础题l1 064

c语言pat基础题l1 064

 PTA 题目 L1-064 估值一亿的AI核心代码 (20分)

原题描述见官网  题目

原作者的代码没有贴注释,没有学过正则表达式的可能看起来比较吃力,可以找教程学习下 正则表达式 ,下图贴出的代码加了注释我就不再重复解释了,这种解法是比较快的

网上另外的解法其实其本质也还是字符匹配,实现过程也是比较复杂

  1. #include <bits/stdc++.h>
  2. #include <regex>
  3. using namespace std;
  4. int main() {
  5. int n;
  6. scanf("%d", &n);
  7. getchar();
  8. while(n--) {
  9. string s;
  10. getline(cin, s);
  11. cout << s << endl;
  12. //1.regex_replace
  13. //R"(\s+)"等价于 [ \f(换页符) \n(换行符) \r(回车符)\t(制表符) \v(垂直制表符)],
  14. //+代表可以多个相连的时候组合一起替换,注意 Unicode 正则表达式会匹配全角空格符。
  15. //匹配所有匹配任何空白字符,包括空格、制表符、换页符等等。
  16. s = regex_replace(s, regex(R"(\s+)"), " ");//第一步将多个连续空格变成一个空格
  17. if(s.front() == ' ') s.erase(s.begin());
  18. if(s.back() == ' ') s.pop_back();//第二步删除首尾的空格
  19. //2.regex_replace
  20. //R"( !)")将 "空格+!" 替换为 "!"
  21. //R"( \.)" "."前面的 "\"代表转义,原来的"."的代表匹配除换行符"\n"之外的任何单字符
  22. //第三步将标点符号前的空格删除
  23. s = regex_replace(s, regex(R"( !)"), "!");//原作者的代码里有这个,测试用例没有对应的,好像不需要这行
  24. s = regex_replace(s, regex(R"( ,)"), ","); //原作者的代码里有这个,测试用例没有对应的,好像不需要这行
  25. //s = regex_replace(s, regex(R"(.)"), ".");//将除\n的单字符都替换为.,在输入密码时可以使用
  26. s = regex_replace(s, regex(R"( \.)"), ".");
  27. s = regex_replace(s, regex(R"( \?)"), "?");
  28. s = regex_replace(s, regex(R"( ')"), "'");
  29. for (auto &c : s) {
  30. if(c != 'I') c = tolower(c);
  31. }//第四步将字母全部变为小写
  32. //定位符用来描述字符串或单词的边界,^ 和 $ 分别指字符串的开始与结束
  33. //\b 描述单词的前或后边界,\B 表示非单词边界。
  34. //R"(\bcan you\b)"表示匹配"can you"字符串,这里在"I"前面增加"_"的原因是与后面的I区分
  35. //注意R"(\bI\b)")(只有单独字符完全匹配(前后都是空格))和R"(I)")(直接替换)的区别
  36. s = regex_replace(s, regex(R"(\bcan you\b)"), "_I can");
  37. s = regex_replace(s, regex(R"(\bcould you\b)"), "_I could");
  38. s = regex_replace(s, regex(R"(\bI\b)"), "you");
  39. s = regex_replace(s, regex(R"(\bme\b)"), "you");
  40. s = regex_replace(s, regex(R"(\?)"), "!");
  41. s = regex_replace(s, regex(R"(\b_I\b)"), "I");
  42. cout << "AI: " << s << endl;
  43. }
  44. //system("pause");
  45. }

转载于 https://blog.csdn.net/weixin_30352645/article/details/95272515

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/418688
推荐阅读
相关标签
  

闽ICP备14008679号