golang刷leetcode技巧之如何实现最长单词
发表于:2025-12-04 作者:千家信息网编辑
千家信息网最后更新 2025年12月04日,这篇文章主要为大家展示了"golang刷leetcode技巧之如何实现最长单词",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"golang刷leetcode
千家信息网最后更新 2025年12月04日golang刷leetcode技巧之如何实现最长单词
这篇文章主要为大家展示了"golang刷leetcode技巧之如何实现最长单词",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"golang刷leetcode技巧之如何实现最长单词"这篇文章吧。
给定一组单词words,编写一个程序,找出其中的最长单词,且该单词由这组单词中的其他单词组合而成。若有多个长度相同的结果,返回其中字典序最小的一项,若没有符合要求的单词则返回空字符串。
示例:
输入: ["cat","banana","dog","nana","walk","walker","dogwalker"]
输出: "dogwalker"
解释: "dogwalker"可由"dog"和"walker"组成。
提示:
0 <= len(words) <= 1001 <= len(words[i]) <= 100
解题思路
1,排序+map
2,从最长到最短,
3,深度优先搜索,找剩余的单词是否匹配
4,需要注意的是,搜索前要把当前单词从map删除
5,但是要配合长度递减排序
代码实现
import "sort"type sortWords []stringfunc(s sortWords) Len() int {return len(s)}func(s sortWords) Swap(i, j int) {s[i], s[j] = s[j], s[i]}func(s sortWords) Less(i, j int) bool {return len(s[i]) >= len(s[j])}func longestWord(words []string) string {longest := 0wordsMap := make(map[string]bool)for _, word := range words {wordsMap[word] = trueif longest < len(word) {longest = len(word)}}sort.Sort(sortWords(words))fmt.Println(words)for _, word := range words {delete(wordsMap, word)if dfs(word, wordsMap) {return word}}return ""}func dfs(word string, wordsMap map[string]bool) bool {if word == "" {return true}for i := 1; i <= len(word); i++ {if _, ok := wordsMap[word[:i]];ok {if dfs(word[i:], wordsMap) {return true}}}return false}
以上是"golang刷leetcode技巧之如何实现最长单词"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
单词
最长
技巧
内容
篇文章
长度
学习
帮助
排序
搜索
最小
相同
代码
多个
字典
思路
易懂
更多
条理
深度
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
关于网络安全教育图片
华三网络安全白皮书
网络安全狗插件尚未安装
网络安全股新疆
计算机网络安全运维期末
与服务器通信时出现问题
合事达网络技术有限公司
java软件开发视频百度云
企业网络安全宣传标语
10万人同时访问用什么服务器好
图形数据库应用技术规定
数据库高级检索sql语句
天云数据库hubble
数据库发明人
服务器搭建教程2021
什么叫网络安全工程师
网络安全证书报名时间
服务器 重启 日志
瘟疫传说服务器
QQ会不会关闭服务器
火电工控系统网络安全
i5-4200m软件开发
停车普查数据库
方舟集群服务器端口
通联支付软件开发工资
手机电脑网络安全技巧
数据库版本控制插件
山东做网络安全工程师
农信社软件开发部如何
舜宇软件开发部部长