zoukankan      html  css  js  c++  java
  • 华为机试-在字符串中找出连续最长的数字串

    题目描述
    样例输出
    输出123058789,函数返回值9
    输出54761,函数返回值5

    接口说明
    函数原型:
    unsignedint Continumax(char** pOutputstr, char* intputstr)
    输入参数:
    char* intputstr 输入字符串;
    输出参数:
    char** pOutputstr: 连续最长的数字串,如果连续最长的数字串的长度为0,应该返回空字符串;
    如果输入字符串是空,也应该返回空字符串;
    返回值:
    连续最长的数字串的长度



    输入描述:
    输入一个字符串。


    输出描述:
    输出字符串中最长的数字字符串和它的长度。如果有相同长度的串,则要一块儿输出,但是长度还是一串的长度

    输入例子:
    abcd12345ed125ss123058789

    输出例子:
    123058789,9

    Java代码实现

    1. import java.util.ArrayList;  
    2. import java.util.List;  
    3. import java.util.Scanner;  
    4.   
    5. /** 
    6.  * 在字符串中找出连续最长的数字串 
    7.  *  
    8.  * @author WWJ 
    9.  * 
    10.  */  
    11. public class Main {  
    12.   
    13.     public static void main(String[] args) {  
    14.         // TODO Auto-generated method stub  
    15.         Scanner sc = new Scanner(System.in);  
    16.   
    17.         while (sc.hasNextLine()) {  
    18.             String string = sc.nextLine();  
    19.             StringBuilder stringBuilder = new StringBuilder();  
    20.             int num = continumax(stringBuilder, string);  
    21.             if (num != 0) {  
    22.                 System.out.println(stringBuilder.toString() + "," + num);  
    23.             } else {  
    24.                 System.out.println(0);  
    25.             }  
    26.   
    27.         }  
    28.     }  
    29.   
    30.     private static int continumax(StringBuilder stringBuilder, String string) {  
    31.         List<Integer> start = new ArrayList<>();  
    32.         List<Integer> end = new ArrayList<>();  
    33.   
    34.         int max = 0;  
    35.         int currStart = 0;  
    36.         int currEnd = 0;  
    37.         boolean findFirst = false;  
    38.         for (int i = 0; i < string.length(); i++) {  
    39.             if (string.charAt(i) >= '0' && string.charAt(i) <= '9') {  
    40.                 if (!findFirst) {  
    41.                     findFirst = true;  
    42.                     currStart = i;  
    43.                 }  
    44.   
    45.                 if (i == string.length() - 1) {  
    46.                     currEnd = i;  
    47.                     if (currEnd - currStart + 1 > max) {  
    48.                         start.clear();  
    49.                         end.clear();  
    50.                         start.add(currStart);  
    51.                         end.add(currEnd);  
    52.   
    53.                         max = currEnd - currStart + 1;  
    54.                     } else if (currEnd - currStart + 1 == max) {  
    55.                         start.add(currStart);  
    56.                         end.add(currEnd);  
    57.                     }  
    58.                     findFirst = false;  
    59.                 }  
    60.   
    61.             } else {  
    62.                 if (findFirst) {  
    63.                     currEnd = i - 1;  
    64.                     if (currEnd - currStart + 1 > max) {  
    65.                         start.clear();  
    66.                         end.clear();  
    67.                         start.add(currStart);  
    68.                         end.add(currEnd);  
    69.   
    70.                         max = currEnd - currStart + 1;  
    71.                     } else if (currEnd - currStart + 1 == max) {  
    72.                         start.add(currStart);  
    73.                         end.add(currEnd);  
    74.                     }  
    75.                     findFirst = false;  
    76.                 }  
    77.   
    78.             }  
    79.         }  
    80.         if (max != 0) {  
    81.             for (int i = 0; i < start.size(); i++) {  
    82.                 if (end.get(i) == string.length()) {  
    83.                     stringBuilder.append(string.substring(start.get(i)));  
    84.                 } else {  
    85.                     stringBuilder.append(string.substring(start.get(i), end.get(i) + 1));  
    86.                 }  
    87.             }  
    88.   
    89.         }  
    90.   
    91.         return max;  
    92.     }  
    93.   
    94. }  
  • 相关阅读:
    68
    56
    Django manager 命令笔记
    Django 执行 manage 命令方式
    Django 连接 Mysql (8.0.16) 失败
    Python django 安装 mysqlclient 失败
    H.264 SODB RBSP EBSP的区别
    FFmpeg—— Bitstream Filters 作用
    MySQL 远程连接问题 (Windows Server)
    MySQL 笔记
  • 原文地址:https://www.cnblogs.com/wwjldm/p/7098437.html
Copyright © 2011-2022 走看看