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. }  
  • 相关阅读:
    ASP.NET中的ViewState
    (标记)Spring.Net+NHibenate+Asp.Net mvc +ExtJs 系列 By 似水流年
    C#中类的定义
    苹果CMS搭建影视网站教程
    Java之冒泡排序
    Java之数组扩容
    Linux之netstat命令基本使用
    Linux之systemctl命令基本使用
    Oracle11g R2 安装教程(非常详细 )
    Linux之firewall防火墙开启和关闭
  • 原文地址:https://www.cnblogs.com/wwjldm/p/7098437.html
Copyright © 2011-2022 走看看