最长单词(一星级题目) 本来是很简单的,其实就是加个flag

随机了一个题目:

  给一个词典,找出其中所有最长的单词。 

这道题对于初学者还是很有用的,毕竟用的逻辑是比较复杂的

样例

在词典

{
  "dog",
  "google",
  "facebook",
  "internationalization",
  "blabla"
}

中, 最长的单词集合为 ["internationalization"]

在词典

{
  "like",
  "love",
  "hate",
  "yes"
}

中,最长的单词集合为 ["like", "love", "hate"]

 

首先:  新建一个main方法

 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,这个可以解决很多问题,其实最经典的就是获取质数的程序。

 

posted on 2017-08-30 16:58  陈陈之之  阅读(222)  评论(0)    收藏  举报