题目描述:
读入一个字符串str,输出字符串str中连续最长的数字串
输入描述:
每个测试输入包含1个测试用例,一个字符串str,长度不超过255。
输出描述:
在一行内输出str中里连续最长的数字串和长度。
输入样例:
abcd12345ed125ss123456789
输出样例:
123456789,9
题目解析:
step 1:将输入的字符串转化为字符数组;
step 2:创建StringBuffer或者String对象,将遍历后符合条件的数字字符追加到其后,不符合条件则追加空格;
step 3:创建String数组,对步骤二的StringBuffer或者String对象进行分割(以一个或者多空格);
step 4:创建maxSize(保存连续最长的数字串),遍历String数组,不断更新maxSize的值;
step 5:判断maxSize和String数组中的元素长度是否相等,相等直接输出即可(如果有相同长度,以逗号分隔);
step 6:输出maxSize的值,即为连续最长数字串的长度。
详细代码:
import java.util.Scanner;
public class Exercise19 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
//str接收输入的字符串
String str = sc.nextLine();
//判断str的合法性
if(str.length() == 0 || str == null || str.length() > 255){
throw new UnsupportedOperationException("输入的字符串不合法!");
}
StringBuffer sb = new StringBuffer();
for (char ch:str.toCharArray()) {
//如果字符范围是在['0','9'],利用append方法将其加入到sb中
if(ch >= '0' && ch <= '9'){
sb.append(ch);
}else{
//如果不是数字字符,将空格加入到sb中
sb.append(" ");
}
}
//将sb转为字符串
String str1 = sb.toString();
// //定义一个str1用以保存更改后的字符串
// String str1 = "";
// for (char ch:str.toCharArray()) {
// //如果字符范围是在['0','9'],那么直接追加到str1中
// if(ch >= '0' && ch <= '9'){
// str1 += ch;
// }else{
// //如果不是数字字符,将其变为空格,追加到str1中
// str1 += " ";
// }
// }
//将str1以一个或者多个空格进行切割,存入到nums中
String[] nums = str1.split("\\s+");
//maxSize存放最长连续数字串的长度
int maxSize = 0;
for (int i = 0; i < nums.length; i++) {
//如果String数组中的任意一个变量的长度大于maxSize,则更新maxSize的值
maxSize = nums[i].length() > maxSize ? nums[i].length() : maxSize;
}
for (int i = 0; i < nums.length; i++) {
//如果变量长度等于最大长度(连续数字串的长度),则进行输出(变量长度相等时,都进行输出)
if(maxSize == nums[i].length()){
//打印变量后,以逗号进行分割
System.out.print(nums[i] + ",");
}
}
//打印变量的长度
System.out.println(maxSize);
}
}
}
心灵鸡汤:想得终会得,别轻言放弃!