最长单词(一星级题目) 本来是很简单的,其实就是加个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,这个可以解决很多问题,其实最经典的就是获取质数的程序。
浙公网安备 33010602011771号