题目:
题意解析:
题解:
这个的题目我用了两种解法,注意看题目要在输入的字符串最后加一个 " -" ,我就是因为没有注意这个细节,一直出错。
方法一:
判断当前字符是不是“o",如果是就一直向后判断,直到字符不为 “o" 为止,最后在判断一下字符不为 “o" 是不是 “-” 就行了。 最后取最大值就行了。
代码:
#include<bits/stdc++.h>
using namespace std;
int n;
int main() {
cin>>n;
string a;
cin>>a;
a=a+'-';
int ans=-1;
for(int i=0;i<=n;i++){
if(a[i]=='o'){
int l=0;
while(a[i]=='o'&&i<=n){
l++;
i++;
}
if(a[i]=='-'&&i<=n){
ans=max(ans,l);
}
}
}
if(ans==n)
ans=-1;
cout<<ans;
return 0;
}
方法二:
这个方法是判断 “-”,用一个数 l 来记录上一次字符为 “-”的下标,,然后不断更新 l 的值,不断比较更新的时候Dango串的长度。最后取最大值。
代码:
#include<bits/stdc++.h>
using namespace std;
int n;
int main() {
cin>>n;
string a;
cin>>a;
a=a+'-';
int ans=-1,l=-1;
for(int i=0;i<=n;i++){
if(a[i]=='-'){
ans=max(ans,i-l-1);
l=i;
}
}
if(n == ans||ans==0)
ans = -1;
cout<<ans;
return 0;
}
最后要注意的是,不管是第一个方法还是最后一个方法,最后都要判断一下当ans的值为n的时候,要输出-1。因为给定的是长度为n的字串最长的Dango串长度为n-1。