题目地址
其实一看到这个题目就想到要用正则,but正则一开始实在是不怎么会,所以琢磨了很久。目前看到的题解都不是使用正则,都写了一堆。正则只要表达式写对了就真的非常简单了。(然而表达式就是最难的啊啊啊!!!!)
ps,因为反正输入的都是字母所以其实在这里\w和[a-zA-Z]效果一样,但是他们两个当然是不一样的辣!
():group,就这么分组了,组1表示为$1,组2表示为$2,以此类推。\1也是表示组1,但是这就是在正则表达式里面的表示了。
and,记得两个\!!!
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
scanf("%d",&n);
getchar();
while(n--)
{
string str;
getline(cin,str);
str = regex_replace(str,regex("([a-zA-Z])\\1{2,}"),"$1$1");
str = regex_replace(str,regex("(\\w)\\1{1}(\\w)\\2{1}"),"$1$1$2");
cout<<str<<endl;
}
return 0;
}
觉得有用就点赞收藏评论吧~(真不容易,泪目)