题解 | #在字符串中找出连续最长的数字串#
在字符串中找出连续最长的数字串
https://www.nowcoder.com/practice/2c81f88ecd5a4cc395b5308a99afbbec
import java.util.Scanner; import java.util.*; // 纯属考察基本的字符串api调用熟练程度,没有算法可言 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 while (in.hasNextLine()) { // 注意 while 处理多个 case String s = in.nextLine(); ArrayList<String> res = find(s); StringBuilder builder = new StringBuilder(); if(res.size() == 1) { System.out.println(res.get(0) +"," + res.get(0).length()); } else { for(String item : res) { builder.append(item); } System.out.println(builder.toString() + "," + res.get(0).length()); } } } public static ArrayList<String> find(String s) { char[] cs = s.toCharArray(); ArrayList<String> res = new ArrayList<String>(); int maxlen = 0; for(int i = 0; i < cs.length;) { if(Character.isDigit(cs[i])) { int start = i; int off = 0; while(i < cs.length && Character.isDigit(cs[i])) { off++; i++; } if(off > maxlen) { res.clear(); res.add(new String(cs, start, off)); maxlen = off; } else if(off == maxlen) { res.add(new String(cs, start, off)); } } else { i++; } } return res; } }