程序员面试金典 - 面试题 17.15. 最长单词(排序+递归)

1. 题目

给定一组单词words,编写一个程序,找出其中的最长单词,且该单词由这组单词中的其他单词组合而成。
若有多个长度相同的结果,返回其中字典序最小的一项,若没有符合要求的单词则返回空字符串。

示例:
输入: ["cat","banana","dog","nana","walk","walker","dogwalker"]
输出: "dogwalker"
解释: "dogwalker"可由"dog""walker"组成。提示:
0 <= len(words) <= 100
1 <= len(words[i]) <= 100

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-word-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 单词可重复使用
  • 先按长度降序排列,长度相等,字典序小的在前
  • 从前往后找到第一个单词即可
  • 将单词拆分成子串,递归判断子串的子串
class Solution {
public:string longestWord(vector<string>& words) {if(words.size() < 2)return "";sort(words.begin(), words.end(),[&](auto a, auto b){if(a.size() == b.size())return a < b;return a.size() > b.size();});int i, len;string ans, sub;unordered_set<string> set;for(i = 0; i < words.size(); ++i)set.insert(words[i]);for(i = 0; i < words.size()-1; ++i){for(len = 1; len < words[i].size(); ++len){sub = words[i].substr(0,len);if(set.count(sub) && ok(words[i].substr(len), set))return words[i];}}return "";	}bool ok(string s, unordered_set<string> &set){if(s=="")return true;bool good = false;for(int len = 1; len <= s.size(); ++len){string sub = s.substr(0,len);if(set.count(sub) && ok(s.substr(len),set)){good = true;break;}}return good;}
};

48 ms 12.7 MB

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/476649.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.net 2.0 制作 柱状图

最近项目需要用到图表,饼图,柱状图&#xff0c;这些都很常用&#xff0c;在网上找了下&#xff0c;不是自已要的&#xff0c;只好自已动手做个,先做了个柱状图,先看下效果图代码有详解下载代码 此代码在winform环境下编译通过,要用在web环境也简单&#xff0c;只需将Graphics对…

不卷大厂了,78位高校青年教师晒出工资

源&#xff5c;青塔人才综合自知乎、小红书今天&#xff0c;小编给大家搜罗了江苏、浙江、上海、广东、山东、北京、福建、广西、云南、陕西、川渝、中部、东北地区78位高校教师的薪资待遇&#xff0c;欢迎转发分享&#xff5e;江苏常四荒&#xff1a;普通高校&#xff0c;讲师…

牛客练习赛61 - A - 打怪

题目描述 你是一个勇士&#xff0c;现在你准备去森林刷毛球怪&#xff0c;你有两个属性&#xff08;血量&#xff0c;攻击力&#xff09;&#xff0c;毛球怪也有这两个属性。 当你遭遇一只毛球怪时你们会进入战斗&#xff0c;然后你和毛球怪轮流攻击&#xff08;你先手&#x…

javascript 的参数有长度限制吗?一个细节引起的误区

一个普通的javascrip函数&#xff0c;只有一个入口参数 function test(info) ... { alert(info); } 页面用是aspx代码生成&#xff0c;调用test函数的入口参数可能是一个很长的字符串&#xff0c;同时页面上根据一个数据集构造很多如下所示的标签。 < a href " jav…

CCF列表更新引热议:ICLR未上榜,NAACL等级上升

编 | 卖萌酱2021年1月&#xff0c;CCF决定启动新一轮中国计算机学会推荐国际学术会议和期刊目录&#xff08;一下简称《目录》&#xff09;调整工作并委托CCF学术工作委员会组织实施。经过前期的充分讨论和论证后&#xff0c;于2021年9月开始正式向各专委会征集调整建议。期间由…

centos mysql jar 驱动包_JDBC连接MySQL的数据库

JDBC连接MySQL的数据库开发工具&#xff1a;eclipes数据库&#xff1a;mysql 5.6jdk&#xff1a;1.8目的&#xff1a;通过简单示例&#xff0c;教会大家如何通过java的代码实现的MySQL的数据库访问。访问数据库&#xff1a;首先要加载数据库的驱动程序(只需要在第一次访问数据库…

牛客练习赛61 - B - 吃水果

题目描述 最近米咔买了n个苹果和m个香蕉&#xff0c;他每天可以选择吃掉一个苹果和一个香蕉&#xff08;必须都吃一个&#xff0c;即如果其中一种水果的数量为0&#xff0c;则他不能进行这个操作&#xff09;&#xff0c;或者使用魔法将某一种水果的数量翻倍。 现在米咔想吃西…

SQL Server中的数据类型详解

(1)char、varchar、text和nchar、nvarchar、ntextchar 和varchar的长度都在1到8000之间&#xff0c;它们的区别在于char是定长字符数据&#xff0c;而varchar是变长字符数据。所谓定长就是长度固定的&#xff0c;当输入的数据长度没有达到指定的长度时将自动以英文空格在其后面…

java定时器只执行一次_面试阿里P6,却被MySQL难倒,二战阿里,挤进天猫团队(Java岗)...

爱因斯坦说过“耐心和恒心总会得到报酬的”&#xff0c;我也一直把这句话当做自己的座右铭&#xff0c;这句箴言在今年也彻底在我身上实现了。每一个程序员都拥有一座大厂梦&#xff0c;我也不例外&#xff0c;去年面试阿里P6&#xff0c;竟然被MySQL问倒了&#xff0c;很多相关…

推荐一个动漫风格转换的开源项目!可在线运行

文 | 超神经源 | HyperAIAnimeGANv2 最近发布了一项更新&#xff0c;由社区贡献者开发&#xff0c;通过 Gradio 实现了一个可以在线运行的 Demo&#xff0c;发布在 huggingface 上。访问链接&#xff1a;https://huggingface.co/spaces/akhaliq/AnimeGANv2即可在线上轻松实现 A…

程序员面试金典 - 面试题 16.09. 运算(只用+法做乘除)

1. 题目 请实现整数数字的乘法、减法和除法运算&#xff0c;运算结果均为整数数字&#xff0c; 程序中只允许使用加法运算符和逻辑运算符&#xff0c;允许程序中出现正负常数&#xff0c;不允许使用位运算。 你的实现应该支持如下操作&#xff1a; Operations() 构造函数min…

python语言支持函数式编程_Python语言之Pyhton入门笔记函数式编程

本文主要向大家介绍了Python语言之Pyhton入门笔记函数式编程&#xff0c;通过具体的内容向大家展示&#xff0c;希望对大家学习Python语言有所帮助。 一&#xff0c;匿名函数 def add(x,y) return xy print(add(2,3)) flambda x,y:xy #匿名函数需要lambdb来指定&#xff0c;lam…

谷歌大脑提出VeLO优化器,无需调参,最高比Adam快16倍!

文 | 萧箫 发自 凹非寺源 | 量子位还在苦恼怎么给优化器调整更好的参数吗&#xff1f;现在&#xff0c;谷歌大脑搞出了一个新的优化器VeLO&#xff0c;无需手动调整任何超参数&#xff0c;直接用就完事了。与其他人工设计的如Adam、AdaGrad等算法不同&#xff0c;VeLO完全基于A…

程序员面试金典 - 面试题 17.22. 单词转换(BFS)

1. 题目 给定字典中的两个词&#xff0c;长度相等。 写一个方法&#xff0c;把一个词转换成另一个词&#xff0c; 但是一次只能改变一个字符。 每一步得到的新词都必须能在字典中找到。 编写一个程序&#xff0c;返回一个可能的转换序列。如有多个可能的转换序列&#xff0c;…

成功:选择比努力更重要,智慧比勤奋更重要

人生三句话&#xff1a; 1、想要什么&#xff0c;比做什么更重要&#xff1b; 2、选择比努力更重要&#xff1b; 3、智慧比勤奋更重要&#xff1b;信息时代的财富&#xff0c;蕴藏在哪里&#xff1f;农业时代财富&#xff0c;蕴藏在土地&#xff0c;谁拥有土地&…

OpenAI新模型惊艳了!对话问答能力逆天

编&#xff5c;昕朋 Aeneas源&#xff5c;新智元OpenAI新模型来了&#xff01;全新对话模型ChatGPT&#xff0c;可以回答用户问题&#xff0c;还能挑出问题的错误之处。面对不懂的问题&#xff0c;还会承认错误并拒绝回答&#xff01;当人们翘首期待GPT-4时&#xff0c;OpenAI在…

程序员面试金典 - 面试题 17.17. 多次搜索(Trie树)

文章目录1. 题目2. 解题2.1 暴力超时2.2 Trie树1. 题目 给定一个较长字符串big和一个包含较短字符串的数组smalls&#xff0c;设计一个方法&#xff0c;根据smalls中的每一个较短字符串&#xff0c;对big进行搜索。 输出smalls中的字符串在big里出现的所有位置positions&#…

雅虎的Mash-up 之路

当今的互联网&#xff0c;每天都会冒出许多的新产品、新技术、新概念&#xff0c;越来越多的Web N.0已经让我们看得眼花缭乱。现在业界对Mash-up有个比较统一的定义&#xff1a;Mash-up 模式指的是网站采用混合技术搭建&#xff0c;不同的功能模块与不同的外界API接口对接实现。…

python读单行文本求平均值_如何从文本文件python中的数字列表中找到平均值

在文本文件中&#xff0c;有一个名称列表&#xff0c;旁边有一个数字&#xff0c;表示他们在本例中的分数。有没有办法计算出文本文件中所有数字的平均值。在 代码&#xff1a;print("average calculator") option input("option: ") option_class input…

把狗画成擦边猛男,「AI绘画」能有多离谱?

文&#xff5c;哈哈哈波特源&#xff5c;知乎一个AI绘画小程序日增用户65.7万人&#xff0c;一周内突破100万&#xff0c;这个增长速度也算是一夜爆红了&#xff0c;AI画作一时间在朋友圈传得沸沸扬扬&#xff0c;不仅如此&#xff0c;还迅速引起一波短视频热潮&#xff0c;相关…