现在的位置: 首页 > 综合 > 正文

[转]给你一个单词a,如果通过交换单词中字母的顺序可以得到另外的单词b,那么定义b是a的兄弟单词。现在给你一个字典,用户输入一个单词,让你根据字典找出这个单词有多少个兄弟单词

2013年07月07日 ⁄ 综合 ⁄ 共 329字 ⁄ 字号 评论关闭

一个单词如果交换其所含字母顺序,得到的单词称为兄弟单词,例如mary和army是兄弟单词,即所含字母是一样的,只是字母顺序不同,用户输入一个单词,要求在一个字典中找出该单词的所有兄弟单词,并输出。给出相应的数据结构及算法。要求时间和空间复杂度尽可能低

目前思想:

struct {

char data;

int n

};

根据数学定理:任何一个大于1的自然数N,都可以唯一分解成有限个质数的乘积 N=(P_1^a1)*(P_2^a2)......(P_n^an) , 这里P_1<P_2<...<P_n是质数,且唯一。

例如

a=2 b=3 c=5 d=7 e=11...

f(abcd)=2*3*5*7=210

然后字典里找乘积210的位数相同的一定是这5个字母组合的单词就是兄弟单词

原文出处不详

抱歉!评论已关闭.