题目说明:
乍一看,有一个相当简单的方式:
题解方式一:
1、将字符串进行分隔,并将数字放进list里备用
2、比较list里面数字的大小
public boolean areNumbersAscending(String s) { List<Integer> list = new ArrayList<>(); // 用于存储分隔后的正整数 String[] sp = s.split(" "); // 将字符串按空格进行分隔 for (String str : sp) { if (isNumeric(str)) { list.add(Integer.parseInt(str)); } } // 比较list相邻两个数字的大小 int temp = 0; for (int i : list) { if (i <= temp) { return false; } temp = i; } return true; } // 判断字符串是否是数字 public static boolean isNumeric(String str) { try { Integer.parseInt(str); return true; } catch (Exception e) { return false; } }
题解一写完感觉美滋滋,一提交傻眼了,思路可以,但效率不高。
那就推到重来呗:
于是有了接下来一版:
public boolean areNumbersAscending(String s) {
List<Integer> list = new ArrayList<>();
String[] sp = s.split(" ");
for (String str : sp) {
if (isNumeric(str)) list.add(Integer.parseInt(str));
}
for (int i=0;i<list.size()-1;i++) {
if (list.get(i+1) <= list.get(i)) {
return false;
}
}
return true;
}
public static boolean isNumeric(String str){
for(int i=str.length();--i>=0;){
int chr=str.charAt(i);
if(chr<48 || chr>57)
return false;
}
return true;
}
执行结果如图所示!
如果大家有更好的方式方法,欢迎评论区留言。