题目链接地址为:http://www.lintcode.com/zh-cn/problem/longest-words/#
给一个词典,找出其中所有最长的单词。
样例:
在词典
{
"dog",
"google",
"facebook",
"internationalization",
"blabla"
}
中, 最长的单词集合为 ["internationalization"]
在词典
{
"like",
"love",
"hate",
"yes"
}
中,最长的单词集合为 ["like", "love", "hate"]
代码如下:
package com.ak.demo;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
/**
*
给一个词典,找出其中所有最长的单词。
样例
在词典
{
"dog",
"google",
"facebook",
"internationalization",
"blabla"
}
中, 最长的单词集合为 ["internationalization"]
在词典
{
"like",
"love",
"hate",
"yes"
}
中,最长的单词集合为 ["like", "love", "hate"]
* @author Administrator
*
*/
public class LongestWordsDemo {
public static void main(String[] args) {
/*String[] str = {
"dog",
"google",
"facebook",
"internationalization",
"blabla"
};*/
/*String[] str = {
"like",
"love",
"hate",
"yes"
};*/
String[] str = {
"dog",
"faceboon",
"google",
"facebook",
"blabla"
};
List<String> list = longestWords(str);
System.out.println(list.toString());
}
public static List<String> longestWords(String[] dictionary) {
List<String> list = new ArrayList<String>();
Map<String,String> map = new HashMap<String,String>();
//循环遍历字符串数组
for(int i = 0;i < dictionary.length; i++){
//判断数组是否越界
if((i+1) < dictionary.length){
//比较两个数据的长度大小,如果较大的则用map记录下来
if(dictionary[i].length() > dictionary[i + 1].length()){
map.put(dictionary[i], dictionary[i]);
}else if(dictionary[i].length() == dictionary[i + 1].length()){//如果较大的和另外一个比较一样大则记录下来
map.put(dictionary[i], dictionary[i]);
}
}
}
//循环迭代map
for (Entry<String, String> entry: map.entrySet()) {
String value = entry.getValue();
list.add(value);
}
return list;
}
}
代码写的不是很好,有好的意见大家可以提出,我可以学习学习一下。谢谢!