题目如下(002)
来源:互联网 发布:淘宝开店细则 编辑:程序博客网 时间:2024/06/14 10:28
一个单词单词字母交换,可得另一个单词,如army->mary,成为兄弟单词。提供一个单词,在字典中找到它的兄弟。描述数据结构和查询过程。
方法引于:http://blog.csdn.net/yahohi/article/details/7985328。
解法一:
使用hash_map和链表。
首先定义一个key,使得兄弟单词有相同的key,不是兄弟的单词有不同的key。例如,将单词按字母从小到大重新排序后作为其key,比如bad的key为abd,good的key为dgoo。
使用链表将所有兄弟单词串在一起,hash_map的key为单词的key,value为链表的起始地址。
开始时,先遍历字典,将每个单词都按照key加入到对应的链表当中。当需要找兄弟单词时,只需求取这个单词的key,然后到hash_map中找到对应的链表即可。
这样创建hash_map时时间复杂度为O(n),查找兄弟单词时时间复杂度是O(1)。
解法二:
同样使用hash_map和链表。
将每一个字母对应一个质数,然后让对应的质数相乘,将得到的值进行hash,这样兄弟单词的值就是一样的了,并且不同单词的质数相乘积肯定不同。
使用链表将所有兄弟单词串在一起,hash_map的key为单词的质数相乘积,value为链表的起始地址。
对于用户输入的单词进行计算,然后查找hash,将链表遍历输出就得到所有兄弟单词。
这样创建hash_map时时间复杂度为O(n),查找兄弟单词时时间复杂度是O(1)。
这里的n显而易见是指字典中的单词数目。由此可见,hash(散列表)可以有效的解决效率问题。
0 0
- 题目如下(002)
- 题目如下(001)
- /*题目:打印出如下图案(菱形)
- 题目:打印出如下图案(菱形)(java)
- LingXing.java 题目:打印出如下图案(菱形) * *** ***** ******* ***** *** *
- 【程序19】 题目:打印出如下图案(菱形) * *** ****** ******** ****** *** *
- 数字转二进制的问题,题目如下:
- 待做的算法题目如下
- 77.关于链表问题的面试题目如下:
- ZOJ 1067 题目大意:hiahiahiahia~如下所示~
- python题目要求:输出如下图片中的图形
- 独轮车 题目代码如下 细心和耐心就好
- (ICTCLAS)TjuChineseAnalyzer.源代码如下:
- 这个题目也是经典的BFS算法,题目的链接如下: http://poj.org/problem?id=1915
- win7下 jar文件双击不能运行,java -jar的题目解决如下
- 题目: 如下为类型CMyString的声明,请为该类型添加赋值运算符函数.
- 打印出如下图案(菱形):
- 打印出如下图案(菱形)
- hadoop-2.5 eclipse工程
- 一个通用onReady函数的实现
- java之画图板浅析(一)
- 【2014】【辛星】【php】【秋季】【3】初次邂逅变量
- 从Maven到Gradle
- 题目如下(002)
- 3.2策略模式(5.9)
- quick-cocos2d-x游戏开发【9】——单点触摸
- 怎么手动加载xib
- Rational Rose2007(v7.0)下载地址、安装及激活详解教程(图)
- 深入了解泛型
- 数据结构之---排序
- 第一次真正走进数据库
- "《 Serial Drivers 》by Alessandro Rubini" 学习笔记