哪一个单词是世界上最长的单词(世界上最长的单词英语单词是什么),本文通过数据整理汇集了哪一个单词是世界上最长的单词(世界上最长的单词英语单词是什么)相关信息,下面一起看看。

世界上最长的单词是什么(最长的单词是哪个)

题目给定一组单词话,编写一个程序,找出其中的最长单词,且该单词由这组单词中的其他单词组合而成。

若有多个长度相同的结果,返回其中字典序最小的一项,若没有符合要求的单词则返回空字符串。

示例:输入:['猫','香蕉','狗','娜娜','散步','散步者','遛狗者]输出:"遛狗人"

解释:"遛狗人"可由"狗"和沃克组成。

提示:0=len(单词)=200

1=len(words[i])=100

解题思路分析1、排序递归;时间复杂度O(n^2),空间复杂度O(n)

varmmap[string]boolfunclongestWord(words[]string)string { m=make(map[string]bool)n:=len(words)for I:=0;在;I { m[words[I]]=true }排序Slice(words,func(i,jint)bool { iflen(words[I])==len(words[j]){ return words[I]words[j]} return len(words[I])len(words[j])})for I:=0;在;我{//从最长最小字典序的开始找m[words[I]]=false if DFS(words[I])==true { return words[I]} } return ' ' } func DFS(strstring)bool { iflen(str)==0 | | m[str]==true { return true } for I:=1;I=len(str);I { subStr:=str[:I]IFM[subStr]==true { if DFS(str[I:])==true { return true } } } return false } 2、排序动态规划;时间复杂度O(n^3),空间复杂度O(n)

varmmap[string]boolfunclongestWord(words[]string)string { m=make(map[string]bool)n:=len(words)for I:=0;在;I { m[words[I]]=true }排序Slice(words,func(i,jint)bool { iflen(words[I])==len(words[j]){ return words[I]words[j]} return len(words[I])len(words[j]))//从最长最小字典序的开始找fori:=0;在;I { m[words[I]]=false if judge(words[I])==true { return words[I]} } return ' ' }//leet code 139 .单词拆分func judge(sstring)bool { DP:=make([]bool,len(s)1)DP[0]=truen:=len(s)for I:=1;I=n;I { forj:=0;纪;j { ifdp[j]==truem[s[j:I]]==true { DP[I]=true break } } } returndp[n]}总结中等题目,跟leetcode 139 .单词拆分类似

更多哪一个单词是世界上最长的单词(世界上最长的单词英语单词是什么)相关信息请关注本站。