跳转至

问题 C: 最长顺眼串

传送门:ZWGOJ (1)

  1. 题目来源:2024NOC-童创AI 高中组 复赛 T3

题目描述

原题面

童童认为像“\(\texttt{abcd}\)”,“\(\texttt{adfz}\)”,这样按 ASCII 编码由小到大排列,且连续的字符串称为顺眼串,像“\(\texttt{aaa}\)”,“\(\texttt{ccbbbaaa}\)”,“\(\texttt{addba}\)”,这种后面字符比前面字符编码小或者相等的都不是顺眼串,现在要求输入一个字符串,找出其中的最长顺眼串,输出它的长度。

输入要求

一行,一个仅含有小写字母的字符串,长度不超过 \(1000\)

输出要求

一行,一个整数,表示最长顺眼串的长度。

样例

1
abcdefghhhhhahcde
1
8
1
cdeabcfghjkmnxyzxxxccc
1
13

解法

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
#include <bits/stdc++.h>
using namespace std;

int main() {
    string str;
    getline(cin,str);
    int len=str.length();
    int res=1;
    int i=0;
    while(i<len){
        int j;
        for(j=1;i+j<len;j++){
            if(str[i+j-1]>=str[i+j]) break;
            res=max(res,j+1);
        }
        i+=j;
    }

    printf("%d",res);
    return 0;
}