• 288. Unique Word Abbreviation


    An abbreviation of a word follows the form <first letter><number><last letter>. Below are some examples of word abbreviations:

    a) it                      --> it    (no abbreviation)
    
         1
    b) d|o|g                   --> d1g
    
                  1    1  1
         1---5----0----5--8
    c) i|nternationalizatio|n  --> i18n
    
                  1
         1---5----0
    d) l|ocalizatio|n          --> l10n
    

    Assume you have a dictionary and given a word, find whether its abbreviation is unique in the dictionary. A word's abbreviation is unique if no otherword from the dictionary has the same abbreviation.

    Example: 

    Given dictionary = [ "deer", "door", "cake", "card" ]
    
    isUnique("dear") -> false
    isUnique("cart") -> true
    isUnique("cane") -> false
    isUnique("make") -> true

     

    注意 

    dic = [”hello“] word = “hello”  isunique

    public class ValidWordAbbr {
        HashMap<String, String> set;
        public ValidWordAbbr(String[] dictionary) {
            set = new HashMap<String, String>();
            for(int i = 0 ; i < dictionary.length; i++){
                String temp = dictionary[i];
                if(set.containsKey(getKey(temp)) && !set.get(getKey(temp)).equals(temp))
                    set.put(getKey(temp) , "");
                else
                    set.put(getKey(temp) , temp);
                
            }
        }
        
        public String getKey(String s){
            if(s.length() <= 2) return s;
            else{
               return s.charAt(0)+Integer.toString(s.length()-2)+s.charAt(s.length()-1);
            }
        }
    
        public boolean isUnique(String word) {
            if(set.containsKey(getKey(word))){
                return set.get(getKey(word)).equals(word);
            }
            else
                return true;
        }
    }
    
    
    // Your ValidWordAbbr object will be instantiated and called as such:
    // ValidWordAbbr vwa = new ValidWordAbbr(dictionary);
    // vwa.isUnique("Word");
    // vwa.isUnique("anotherWord");
  • 相关阅读:
    堆排序算法
    二叉树的创建、遍历(递归和非递归实现)、交换左右子数、求高度(c++实现)
    hdoj1010 奇偶剪枝+DFS
    常见排序算法c++总结
    B
    C
    D
    E
    G
    F
  • 原文地址:https://www.cnblogs.com/joannacode/p/6133318.html
Copyright © 2020-2023  润新知