b.compareTo(a)
这个函数是比较两个值得大小,如果b比a大,那么返回1
如果小,那么返回-1,相等返回0
如果比较的是字符串,那么比较字典编纂顺序,b靠前返回-1,靠后返回1
这个题的核心虽然是hashtable,但是这个方法还是很重要的,因为自己实现比较字符串很麻烦
/* 用一个Hashset来判断子串是不是在集合里 然后遍历出最长的就行 长度相同的用compareTo方法判断谁的字典顺序靠前 这个题最难的感觉其实是不知道compareTo方法,自己实现还挺麻烦的 */ public String longestWord(String[] words) { //构建set Set<String> set = new HashSet<>(); for (String s : words) { set.add(s); } //记录最大长度字符串 String res = ""; //遍历判断 for (String s : words) { //两种情况值得更新,一种是长度更长,一种是长度一样但是顺序靠前 if (s.length() > res.length() || (s.length() == res.length() && s.compareTo(res) < 0)) { //判断字符串的子串在不在集合里 boolean judge = true; for (int i = s.length() - 1; i > 0; i--) { if (!set.contains(s.substring(0, i))) { judge = false; break; } } if (judge) res = s; } } return res; }