隨機了一個題目: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,這個能夠解決不少問題,其實最經典的就是獲取質數的程序。