Leetcode Unique Word Abbreviation

来源:互联网 发布:论文查重软件免费 编辑:程序博客网 时间:2024/05/18 01:16

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)     1b) d|o|g                   --> d1g              1    1  1     1---5----0----5--8c) i|nternationalizatio|n  --> i18n              1     1---5----0d) 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 other word from the dictionary has the same abbreviation.

Example: 

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

Difficulty: Easy


Use two hashmaps to implement


public class ValidWordAbbr {    HashMap<String, Integer> dict = new HashMap<String, Integer>();    HashMap<String, Integer> abb = new HashMap<String, Integer>();    public ValidWordAbbr(String[] dictionary) {        for(String s : dictionary){            dict.put(s, 1);            if(s.length() >= 2){                String ab = s.charAt(0) + String.valueOf(s.length() - 2) + s.charAt(s.length() - 1);                if(!abb.containsKey(ab)){                    abb.put(ab, 1);                }                else{                    abb.put(ab, abb.get(ab) + 1);                }            }        }    }    public boolean isUnique(String word) {        if(word.length() == 0)            return true;        if(word.length() == 1)            return true;            String s  = word.charAt(0) + String.valueOf(word.length() - 2) + word.charAt(word.length() - 1);        if(dict.containsKey(word) && abb.get(s) >= 2){            return false;        }        if(dict.containsKey(word) && abb.get(s) == 1){            return true;        }        if(abb.containsKey(s)){            return false;        }        return true;            }}// Your ValidWordAbbr object will be instantiated and called as such:// ValidWordAbbr vwa = new ValidWordAbbr(dictionary);// vwa.isUnique("Word");// vwa.isUnique("anotherWord");


0 0