天地无极,乾坤剑法

导航

 

题目描述

样例输出

输出123058789,函数返回值9

输出54761,函数返回值5

 

接口说明

函数原型:

   unsignedint Continumax(char** pOutputstr,  char* intputstr)

输入参数:
   char* intputstr  输入字符串;

输出参数:
   char** pOutputstr: 连续最长的数字串,如果连续最长的数字串的长度为0,应该返回空字符串;如果输入字符串是空,也应该返回空字符串;  

返回值:
  连续最长的数字串的长度

 

 

 

 

输入描述:

输入一个字符串。

输出描述:

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

示例1

输入

abcd12345ed125ss123058789

输出

123058789,9

代码如下:

 1 package com.yzh.hehe;
 2 
 3 import java.util.LinkedList;
 4 import java.util.List;
 5 import java.util.Scanner;
 6 
 7 public class FindLongestNumberStr {
 8 
 9     public static void main(String[] args) {
10         Scanner scanner=new Scanner(System.in);
11         while (scanner.hasNext()) {
12             System.out.println(findLongestNumStr(scanner.nextLine()));
13         }
14         scanner.close();
15     }
16      
17      // 遍历输入字符串,用一个stringBuilder来记录连续的数字字符串,得到一个数字字符串先判断其length是否大于记录链表reList的第一个string的长度,
18      //如果大于等于就把最新的数字字符串添加为reList的第一个位置上,否则不做任何操作,这样最后reList的第一个位置上的就是结果字符串(存在相同长度就是最前面几个)   
19      
20     private static String  findLongestNumStr(String  string) {
21         if (string==null||"".equals(string)) {
22             return "";
23         }
24         List<String>reList=new LinkedList<String>();//记录字符串
25         char[] cArr=string.toCharArray(); 
26         StringBuilder stringBuilder=new StringBuilder(); 
27         for (int i = 0; i <cArr.length; i++) {
28             //处理到一个数字字符串的末尾字符时,记录链表reList为空就直接添加到第一个位置上,否则就判断长度来处理
29             if (!(cArr[i]>='0'&&cArr[i]<='9')) { 
30                 if (reList.size()==0) {
31                     reList.add(stringBuilder.toString());
32                     
33                 }else if (stringBuilder.length()!=0&&stringBuilder.length()>=reList.get(0).length()) {
34                      reList.add(0, stringBuilder.toString());
35                 }
36                 stringBuilder.delete(0, stringBuilder.length());
37             }else if ((cArr[i]>='0'&&cArr[i]<='9')) {
38                 stringBuilder.append(cArr[i]);//只要是数字字符就可以向stringBuilder里添加
39             }
40               
41         }
42         //处理整个字符串一数字字符串结尾的情况,要单独处理这种情况
43         if (stringBuilder.length()!=0&&reList.size()==0) {
44             reList.add(stringBuilder.toString());
45         }else if (stringBuilder.length()!=0&&stringBuilder.length()>=reList.get(0).length()) {
46              reList.add(0, stringBuilder.toString());
47         } 
48         int length=stringBuilder.length();
49          stringBuilder.delete(0, stringBuilder.length());
50         
51         for (String  temp : reList) {
52             if (temp.length()==length) {
53                 stringBuilder.insert(0, temp);
54             }else{
55                 break;
56             }
57         }
58         if (string.length()==0) {
59             return "";
60         } 
61         stringBuilder.append(","+length);  
62         return stringBuilder.toString();
63          
64     }
65 
66 }

网络上见识更Java的做法:

将不是数字的字符全部变成‘a’,再将字符串用a来分割称数组,长度最大的数组的长度即为所求的长度,

 1  
 2 import java.util.*;
 3 public class Main{
 4     public static void main(String[] args) {
 5  
 6         Scanner scan=new Scanner(System.in);
 7         while(scan.hasNext())
 8         {
 9             String str1="";
10             String str=scan.nextLine();
11             for(char ch:str.toCharArray()){
12                 //将不是数字的字符全部变成a
13                 if(ch>='0' && ch<='9'){
14                     str1+=ch;
15                 }else{
16                     str1+="a";
17                 }
18             }
19             //按a分割
20             String[] strs=str1.split("a");
21             int max=0;//记录最长的连续数字串的长度
22             for(int i=0;i<strs.length;i++){
23                 max=strs[i].length()>max?strs[i].length():max;
24             }
25             for(int i=0;i<strs.length;i++){
26                 if(strs[i].length()==max)
27                     System.out.print(strs[i]);
28             }
29             System.out.println(","+max);
30         }
31     }
32 }

 

 

posted on 2018-01-22 18:01  天地无极,乾坤剑法  阅读(187)  评论(0)    收藏  举报