Kuroni and Simple Strings
- 题意
尽可能的删去匹配的’(‘和’)’,使得最后只留下类似’)('这种的简单序列,有匹配的括号可以删去输出1,没有输出0,下面一行输出删去的字符数量,最后一行输出删除的字符位置
- 思路
直接开两个变量一个从左往右,一个从右往左,i从左往右只取’(’,遇到’)‘跳过;j从右往左只取’)’,遇到’('跳过;像两个指针一样当i < j时停止遍历,同时用数组存一下删掉的括号的位置
#include<iostream>
#include<cstdio>
#include<string>
using namespace std;
string s;
int a[1010],b[1010];
int main() {
cin >> s;
int len = s.length();
int len1 = 0,len2 = 0;
for(int i = 0,j = len - 1;i < j;) {
if(s[i] == '(' && s[j] == ')') {
a[++len1] = i + 1;
b[++len2] = j + 1;
i++,j--;
continue;
}
if(s[i] == ')') i++;
if(s[j] == '(') j--;
}
if(len1 > 0) {
cout << 1 << endl;
cout << len1 + len2 << endl;
for(int i = 1;i <= len1;i++) {
printf("%d ", a[i]);
}
for(int i = len2;i >= 1;i--) {
printf("%d ", b[i]);
}
}
else {
cout << 0 << endl;
}
return 0;
}