9.26-涂鸦Java笔试
//返回一个字符串中的倒数第二小的数...
public int secondHighest(String s) {
//排除特殊情况....
if (s == null || s.length() == 0) {
return -1;
}
LinkedHashSet<Integer> set = new LinkedHashSet<>();
//先把数字筛选出来....并去重
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) <= '9' && s.charAt(i) >= '0') {
set.add(s.charAt(i) - '0');
}
}
//如果size<=1
if (set.size() <= 1) {
return -1;
}
Integer[] toArray = set.toArray(new Integer[0]);
Arrays.sort(toArray);
return toArray[toArray.length - 2]; //返回倒数第二个元素
}
//比较版本号,2021.09.01每日一题
public int compareVersion(String version1, String version2) {
String[] sp1 = version1.split("\\."); //按照.分割
String[] sp2 = version2.split("\\."); //按照.分割
List<Integer> list1 = new ArrayList<>();
List<Integer> list2 = new ArrayList<>();
//分割之后放到list中...
Arrays.stream(sp1).forEach(e -> list1.add(Integer.parseInt(e))); //全部解析成为int
Arrays.stream(sp2).forEach(e -> list2.add(Integer.parseInt(e))); //全部解析成为int
for (int i = 0; ; ) {
//如果前面的全部都匹配上了,但是最后另外一个比较长,只要其中一个不为0,就得return 1/-1
if (i == list1.size() && i < list2.size()) {
for (; i < list2.size(); i++) {
if (list2.get(i) != 0) {
return -1;
}
}
return 0;
}
if (i == list2.size() && i < list1.size()) {
for (; i < list1.size(); i++) {
if (list1.get(i) != 0) {
return 1;
}
}
return 0;
}
//如果两者都到达了最后,并且全部都匹配上了,return 0
if (i == list1.size() && i == list2.size()) {
return 0;
}
//如果list1[i]>list2[i],那么return 1
if (list1.get(i) > list2.get(i)) {
return 1;
//如果list1[i]<list2[i],那么return -1
} else if (list1.get(i) < list2.get(i)) {
return -1;
} else { //如果两者相等的话...需要继续向后进行搜索...
i++;
}
}
} #涂鸦智能##笔经##java工程师#

