zoukankan      html  css  js  c++  java
  • [Locked] Unique Word Abbreviation

    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 other word 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

    分析:

      其实题目没有表达清楚...应该包含如下意思:

      1. dictionary = {"dear"},  isUnique("door") -> false

      2. dictionary = {"door", "door"}, isUnique("door") -> true

      3. dictionary = {"dear", "door"}, isUnique("door") -> false

      所以当缩写存在时,也并非一定要return false,如果原字典中与query缩写一致的原字符串,如2中dict的两个"door",与query原字符串"door"一致,那么也应该return true。

    代码:

    class Solution {
    private:
        string maptoabbr(string str) {
            string abbr = "";
            abbr += str[0];
            //若只有一位,则直接返回;有两位,则中间不加数字;两个以上,则加数字
            if(str.length() > 1) {
                abbr += str.length() > 2 ? to_string(str.length() - 2) : "";
                abbr += str.back();
            }
            return abbr;
        }
        //hashabbr用来存储缩写后的字符串,hashorig用来存储原始字符串
        unordered_multiset<string> hashabbr, hashorig;
        
    public:
        Solution(vector<string> dict) {
            for(string str : dict) {
                hashorig.insert(str);
                hashabbr.insert(maptoabbr(str));
            }
        }
        bool isUnique(string str) {
            string abbr = maptoabbr(str);
            //如果缩写不存在字典中,直接return true
            if(hashabbr.find(abbr) == hashabbr.end())
                return true;
            //如果缩写在字典中,则如果query只对应一种原始字符串,则return true;否则return false
            return hashabbr.count(abbr) == hashorig.count(str);
        }
    };

     

  • 相关阅读:
    Certificate、Provisioning Profile、App ID
    boundingRectWithSize
    IOS照片框架
    UIlabel 属性text
    UIMenuController的使用,对UILabel拷贝以及定制菜单
    iOS 自定义emoji表情键盘
    IOS第三方字体
    IOS 验证码
    网上收集的以及自己总结的iOS开发技巧
    给自己一个坚持下去的理由
  • 原文地址:https://www.cnblogs.com/littletail/p/5222468.html
Copyright © 2011-2022 走看看