谷歌面试题(8)
来源:互联网 发布:优衣库官方网络旗舰店 编辑:程序博客网 时间:2024/06/06 00:09
大家都知道谷歌是科技界的领头羊,他的面试题肯定有一些参考意义,所以本人就选了几道代表性面试题。给自己或其他人一些帮助
原题:
// 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
解析:给一个字典,再输入一个单词看这个词是否是唯一的,按一定的规则,第一个字母和最后一个字母一样,中间的字母用数字表示。
答案:
import java.util.ArrayList;public class ValidWordAbbr { HashMap<String, String> map; public ValidWordAbbr(String[] dictionary) { this.map = new HashMap<String, String>(); for(String word : dictionary) { String key = getKey(word); if(map.containsKey(key)) { if(!map.get(key).equals(word)) { map.put(key, ""); } } else { map.put(key, word); } } } public boolean isUnique(String word) { return !map.containsKey(getKey(word))||map.get(getKey(word)).equals(word); } public String getKey(String word) { if(word.length() <= 2) return word; return word.charAt(0) + Integer.toString(word.length() - 2) + word.charAt(word.length() - 1); }}// Your ValidWordAbbr object will be instantiated and called as such:// ValidWordAbbr vwa = new ValidWordAbbr(dictionary);// vwa.isUnique("Word");// vwa.isUnique("anotherWord");
核心流程:getKey()方法返回这个规则的词,再跟字典里的进行对比
阅读全文
0 0
- 谷歌面试题(8)
- 谷歌面试题(2)
- 谷歌面试题(3)
- 谷歌面试题(4)
- 谷歌面试题(5)
- 谷歌面试题(6)
- 谷歌面试题(7)
- 谷歌面试题(9)
- ACM初赛试题(8)
- Java面试题(8)
- java面试题(8)
- 谷歌面试题
- 谷歌面试题
- 谷歌面试题
- 谷歌面试题
- 谷歌面试题
- 谷歌面试题
- 谷歌面试题
- redis启动流程
- sublime安装vue高亮
- MySQL菜鸟学习日志——0001
- 开发常用环境名称区别
- 苹果公司将为里诺数据中心投入双倍资金
- 谷歌面试题(8)
- 初步学习Linq的使用方法表达式
- R语言中的常用连续型分布
- python3.0的基础知识1
- javaScript 高级程序设计学习(一)
- kotlin中的var和val
- java的基本语言元素--代码块
- vue项目 构建 打包 发布 三部曲
- DrawerLayout 事件穿透解决方案