判断出现在字符串中的数字是否递增
题目描述
现有一个字符串 str
,其中字符串由若干个数字和单词片段(均为小写字母)组成,每个片段都由空格隔开,请你判断该字符串中出现的数字片段是否按照数字大小顺序出现。若满足则返回 true
,否则返回 false
。
输入输出格式
输入格式 输入一个字符串 str
。 输出格式 输出 true
或者 false
。
输入输出样例1
输入 I 1 have 2 a 3 cat
输出 true
输入输出样例2
输入 We 2 are 4 all 1 students
输出 false
说明提示
1≤str.length≤100
方法一.正则表达式法
import java.util.Scanner;
class A{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
System.out.println(isNumberSequenceOrdered(str));
}
public static boolean isNumberSequenceOrdered(String str) {
String[] parts = str.split(" "); // 分割字符串
int lastNumber = Integer.MIN_VALUE; // 初始化为最小整数值
for (String part : parts) {
if (part.matches("\\d+")) { // 检查片段是否为数字
int number = Integer.parseInt(part);
if (number <= lastNumber) {
return false; // 如果当前数字小于上一个数字,则不是按顺序的
}
lastNumber = number; // 更新最后一个数字
}
}
return true; // 所有数字均按顺序排列
}
}
方法二.自定义数字判断方法
import java.util.Scanner;
class A{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
System.out.println(isNumberSequenceOrdered(str));
}
private static boolean isNumberSequenceOrdered(String str){
//切割字符串
String[] strs = str.split(" ");
//定义前一个数的指针
int lastNumber = Integer.MIN_VALUE;
for(String s : strs){
//判断字符串是数字
if (isNumeric(s)) {
//定义后一个数的指针
int number = Integer.parseInt(s);
if (number <= lastNumber) {
return false;
}
//为下一轮循环做准备
lastNumber = number;
}
}
//数字是升序的
return true;
}
private static boolean isNumeric(String s){
//防止传入的字符串是空的
if (s == null || s.isEmpty()) {
return false;
}
for(char c : s.toCharArray()){
if(!(Character.isDigit(c))){
return false;
}
}
//字符串每个字符都是数字
return true;
}