PTA 估值一亿的AI核心代码

前端之家收集整理的这篇文章主要介绍了PTA 估值一亿的AI核心代码前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

题面

比赛时被模拟题打自闭了,本来以为是个比较麻烦的模拟,实际上只要会C++的regex不到40行就能把这个题过掉了(orz smz)

regex是用来处理正则表达式,里面有个函数regex_replace(string s,regex re,string new_string)可以将s中满足正则表达式re的所有位置替换成new_string。

#include <bits/stdc++.h>
#include <regex>
using namespace std;
int main() {
	int n;
	scanf("%d",&n);
	while(n--) {
		cout << s << endl;
		getline(cin,s);
		cout << s << endl;
		s = regex_replace(s,regex(R"(\s+)")," ");
		if(s.front() == ‘ ‘) s.erase(s.begin());
		if(s.back() == ‘ ‘) s.pop_back();
		s = regex_replace(s,regex(R"( !)"),"!");	
		s = regex_replace(s,regex(R"(,)"),",");	
		s = regex_replace(s,regex(R"( \.)"),".");	
		s = regex_replace(s,regex(R"( \?)"),"?");	
		s = regex_replace(s,regex(R"( ‘)"),"‘");
		for (auto &c : s) {
			if(c != ‘I‘) c = tolower(c);
		}
		s = regex_replace(s,regex(R"(\bcan you\b)"),"_I can");
		s = regex_replace(s,regex(R"(\bcould you\b)"),"_I could");	
		s = regex_replace(s,regex(R"(\bI\b)"),"you");	
		s = regex_replace(s,regex(R"(\bme\b)"),"you");
		s = regex_replace(s,regex(R"(\?)"),"!");
		s = regex_replace(s,regex(R"(\b_I\b)"),"I");	
		cout << "AI: " << s << endl;	
	}
} 

猜你在找的正则表达式相关文章