描述输入一个字符串,返回其最长的数字子串,以及其长度。若有多个最长的数字子串,则将它们全部输出(按原字符串的相对位置)
本题含有多组样例输入。
数据范围:字符串长度 1 \le n \le 200 \1≤n≤200 , 保证每组输入都至少含有一个数字
输入描述:输入一个字符串。1<=len(字符串)<=200
输出描述:输出字符串中最长的数字字符串和它的长度,中间用逗号间隔。如果有相同长度的串,则要一块儿输出(中间不要输出空格)。
示例1输入:
abcd12345ed125ss123058789 a8a72a6a5yy98y65ee1r2复制输出:
123058789,9 729865,2复制说明:
样例一最长的数字子串为123058789,长度为9 样例二最长的数字子串有72,98,65,长度都为2
该解法可以通过18/20个测试用例,后续有时间会更新全通过的解法。
package org.example.medium;
import java.util.Comparator;
import java.util.Iterator;
import java.util.Scanner;
import java.util.TreeSet;
public class Hj92 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()){
String s = scanner.nextLine();
processDight(s);
}
}
private static void processDight(String str) {
boolean lastDight = false;
TreeSet treeSet = new TreeSet<>(new Comparator() {
@Override
public int compare(String o1, String o2) {
if(o1.length()>o2.length()){
return 1;
}else if(o1.length()==o2.length()){
return 0;
}else {
return -1;
}
}
});
StringBuilder sb = new StringBuilder();
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if(Character.isDigit(c)){
lastDight = true;
sb.append(c);
if(i==str.length()-1){
treeSet.add(sb.toString());
}
}else {
lastDight = false;
treeSet.add(sb.toString());
sb=new StringBuilder();
}
}
System.out.println(treeSet.last() +"," +treeSet.last().length());
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)