随机了一个题目:google
给一个词典,找出其中全部最长的单词。 spa
这道题对于初学者仍是颇有用的,毕竟用的逻辑是比较复杂的code
样例对象
在词典blog
{ "dog", "google", "facebook", "internationalization", "blabla" }
中, 最长的单词集合为 ["internationalization"]
rem
在词典字符串
{ "like", "love", "hate", "yes" }
中,最长的单词集合为 ["like", "love", "hate"]
io
首先: 新建一个main方法class
1 public class charSolution { 2 3 public static void main(String[] args) { 4 String[] strs={ 5 "like", 6 "love", 7 "hate", 8 "yes", 9 "ssss" 10 }; 11 ArrayList<String> strss=longestWords(strs); 12 13 for(String s:strss){ 14 System.out.println(s); 15 } 16 } 17 }
再者:咱们要作的就是一个逻辑了泛型
1.先立一个flag,在这边咱们就用字符串的长度,默认设置int longs=0;
2.作逻辑,循环咱们的list,判断泛型String的长度,和longs对比
2.1 相等,把String对象存进list集合
2.2 大于longs,把list集合全部对象清除,并把当前对象存进集合
2.3 小于longs,不作操做
3.return list
1 public static ArrayList<String> longestWords(String[] dictionary) { 2 3 List<String> strs=new ArrayList<String>(); 4 int longs=0; 5 for(int i=0;i<dictionary.length;i++){ 6 if(i==0){ 7 strs.add(dictionary[i]); 8 longs=dictionary[i].length(); 9 }else{ 10 if(dictionary[i].length()==longs){ 11 strs.add(dictionary[i]); 12 }else if(dictionary[i].length()>longs){ 13 strs.removeAll(strs); 14 strs.add(dictionary[i]); 15 longs=dictionary[i].length(); 16 } 17 } 18 } 19 return (ArrayList<String>)strs; 20 }
对于咱们这样的新手,常常性忘记就是立flag,这个能够解决不少问题,其实最经典的就是获取质数的程序。