1 public class ValidWordAbbr {
 2     private Map<String, Set<String>> dict;
 3     public ValidWordAbbr(String[] dictionary) {
 4         dict = new HashMap<>();
 5         for (String word : dictionary) {
 6             String str = processStr(word);
 7             if (!dict.containsKey(str)) {
 8                 dict.put(str, new HashSet<>());
 9             }
10             dict.get(str).add(word);
11         }
12     }
13 
14     public boolean isUnique(String word) {
15         String str = processStr(word);
16         if (!dict.containsKey(str) || dict.get(str).contains(word) && dict.get(str).size() == 1) {
17             return true;
18         }
19         return false;
20     }
21     
22     private String processStr(String word) {
23         if (word.length() <= 2) {
24             return word;
25         }
26         StringBuilder result = new StringBuilder();
27         result.append(word.charAt(0));
28         result.append(word.length() - 2);
29         result.append(word.charAt(word.length() - 1));
30         return result.toString();
31         
32     }
33 }
34 
35 
36 // Your ValidWordAbbr object will be instantiated and called as such:
37 // ValidWordAbbr vwa = new ValidWordAbbr(dictionary);
38 // vwa.isUnique("Word");
39 // vwa.isUnique("anotherWord");

 

Remember: need to check whether has the word in hashset and garantee size is one.

posted on 2016-07-06 14:33  keepshuatishuati  阅读(116)  评论(0编辑  收藏  举报