用c++写L级的Dango串的定义如下: 1.长度为L+1,只含有‘o’和‘-’ 2.第一个或者最后字符是‘-’,其他字符是‘o’ 给定一个长度为N的字符串S,从中找出长度最长的X级Dango串,输出X,如果找不到输出-1
时间: 2023-06-08 16:07:11 浏览: 97
您好,感谢您的提问!
根据您的要求,我可以为您提供以下的解答:
针对您的问题,我们可以采用贪心算法进行求解。具体来说,我们可以从字符串 S 中挑选出所有符合 Dango 字符串定义的子串,然后从中找到最长的 X 级 Dango 串。
具体的实现流程如下:
1. 遍历字符串 S,找出所有符合 Dango 字符串定义的子串,并将它们存储在一个列表中。
2. 从列表中找出长度最长的 X 级 Dango 串,并输出其长度。
代码实现:
```c
#include <stdio.h>
#include <string.h>
int main() {
// 读入输入字符串 S 和 Dango 串参数 L
char S[100001];
int L;
scanf("%s %d", S, &L);
int len = strlen(S);
int ans = -1;
int cnt = 0;
for (int i = 0; i < len; i++) {
if (S[i] == '-' || S[i] == 'o') {
cnt++;
} else {
if (cnt == L) {
ans = L;
break;
} else if (cnt > L) {
ans = L;
}
cnt = 0;
}
}
if (cnt >= L) {
ans = L;
}
printf("%d\n", ans);
return 0;
}
```
输入示例:
```
o-o-o--oo-oo---oo
3
```
输出示例:
```
3
```
希望我的回答能够对您有所帮助!
阅读全文