题解 AT2020 【[ARC059B] アンバランス / Unbalanced】
cq_loves_Capoo · · 题解
我发现我好像跟题解写的不一样,但思路还是差不多的。
思路大致如下,与其它题解的差不多:
从字符串的开头搜索到结尾,如果该字符串与后面一个或者后面第二个是相同的,那么该字符与跟它相同的就是一个符合题目要求的子序列。
例如:
IIIAM ,虽然IIIAM 是一个符合要求的子序列,但是II 也符合,所以直接输出0 1 就可以了。再举一个例子:
IOIII ,它本身就是一个符合要求的子序列,但是,最前面的是IOI ,所以可以得出结论,答案不是两个长度的子序列就是三个长度的子序列。
贴
#include<bits/stdc++.h>
using namespace std;
string s;//字符串
int main()
{
cin>>s;//输入字符串s
for(int i=0; i<s.length(); i++)//循环
{
if(s[i]==s[i+1]) //如果跟下一个相等
{
cout<<i+1<<" "<<i+2<<endl;//就输出i+1和i+2。
return 0;//直接退出程序
}
if(s[i]==s[i+2])//如果跟第三个字符相等
{
cout<<i+1<<" "<<i+3<<endl;//就输出i+1和i+3。
return 0;
}
}
cout<<"-1 -1\n";//如果还没退出程序,输出-1 -1
}
程序记得加换行!