文章目录
- 😉毛遂自荐
- 🌝题目
- 🔥解题思路
- ✨代码实现
- 💖最后
Code皮皮虾 一个沙雕而又有趣的憨憨少年,和大多数小伙伴们一样喜欢听歌、游戏,当然除此之外还有写作的兴趣,emm…,日子还很长,让我们一起加油努力叭🌈
话不多说,直达底部有粉丝专享福利!!!
😉毛遂自荐
毛遂自荐一下,给大家推荐一下自己的专栏😁,欢迎小伙伴们收藏关注😊
大厂面试题专栏
Java专栏
爬虫专栏
更多专栏尽在主页,点我😁!!!
🌝题目
点我 ! 力扣链接
🔥解题思路
题目要求返回结果——> 如果答案不止一个,返回长度最长且字典序最小的字符串。如果答案不存在,则返回空字符串。
可以得到的信息:1. 返回的字符串长度要长,在长度相等的情况下要字典序最小,2. 返回的字符串是可以通过删除 s 中的某些字符得到。
根据以上信息,可采用模拟法,即遍历 + 双指针
- 遍历
list
,对每一个字符串进行条件判断 - 通过双指针判断当前字符串是否可以通过删除 s 中的某些字符得到。
✨代码实现
class Solution {
public String findLongestWord(String s, List<String> dictionary) {
//双指针
int left = 0,right = 0;
//结果字符串
String res = "";
int len = dictionary.size();
int len1 = s.length(),len2 = 0;
String tmp = "";
//遍历
for (int i = 0;i < len;i++) {
left = 0;
right = 0;
tmp = dictionary.get(i);
len2 = tmp.length();
//双指针判断
while (left < len1 && right < len2) {
//当前字符相等,指针同时后移
if (s.charAt(left) == tmp.charAt(right)) {
left++;
right++;
}else {
//不等则移动左指针
left++;
}
}
//如果当前下标索引 == 当前字符串的长度,说明匹配才成功
if (right == len2) {
//第一次,直接赋值
if ("".equals(res)) {
res = tmp;
continue;
}
//之后,长度优先判断,再才是字典序判断
if (res.length() < tmp.length()) res = tmp;
else if(res.length() == tmp.length()) res = res.compareTo(tmp) > 0 ? tmp : res;
}
}
return res;
}
}
💖最后
我是 Code皮皮虾,一个热爱分享知识的 皮皮虾爱好者,未来的日子里会不断更新出对大家有益的博文,期待大家的关注!!!
创作不易,如果这篇博文对各位有帮助,希望各位小伙伴可以一键三连哦!,感谢支持,我们下次再见~~~
公众号干货内容输出,囊括Java、Python爬虫、力扣题解、大厂面试题 四大系列,更有长时间总结的干货资源分享,后台回复:面试资料即可领取
最后,祝各位步步高升🚀🚀🚀
粉丝福利👇🏻👇🏻👇🏻