华为机试:非严格递增连续数字序列

【编程题目 | 100分】非严格递增连续数字序列 [ 100 / 简单 ]

非严格递增连续数字序列

题目描述:

输入一个字符串仅包含大小写字母和数字,求字符串中包含的最长的非严格递增连续数字序列的长度(比如12234属于非严格递增连续数字序列)。

输入描述:

输入一个字符串仅包含大小写字母和数字,输入的字符串最大不超过255个字符。

输出描述:

最长的非严格递增连续数字序列的长度

示例 1:

输入

abc2234019A334bc

输出

4

说明:

2234为最长的非严格递增连续数字序列,所以长度为4

测试用例:

aaaaaa44ko543j123j7345677781    -->  34567778
aaaaa34567778a44ko543j123j71    -->  34567778
345678a44ko543j123j7134567778aa -->  134567778

参考代码:

Java代码实现:

import java.util.Scanner;

public class increaseNumSubsequences {
          
   
    public static void main(String[] args) {
          
   
        Scanner in = new Scanner(System.in);
        String str = in.nextLine();
        int maxLength = 0;
        int length = 0;
        char maxChar = 0;  // 存储上一个数字字符
        for (int i = 0; i < str.length(); i++) {
          
   
            char c = str.charAt(i);
            if (c >= maxChar && c <= 9) {
          
     // 判断是否是非递减
                length++;
                maxChar = c;
                maxLength = Math.max(length, maxLength);
            } else if (c >= 0 && c <= 9) {
          
     // 是数字,但小于上一个数字
                length = 1;
                maxChar = c;
            } else {
          
     // 如果不是数字
                length = 0;
                maxChar = 0;
            }
        }

        System.out.println(maxLength);
    }
}
经验分享 程序员 微信小程序 职场和发展