✨Code皮皮虾通俗易懂,一次遍历 + 双指针怒解通过删除字母匹配到字典里最长单词

Posted Code皮皮虾

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了✨Code皮皮虾通俗易懂,一次遍历 + 双指针怒解通过删除字母匹配到字典里最长单词相关的知识,希望对你有一定的参考价值。

Code皮皮虾 一个沙雕而又有趣的憨憨少年,和大多数小伙伴们一样喜欢听歌、游戏,当然除此之外还有写作的兴趣,emm…,日子还很长,让我们一起加油努力叭🌈

话不多说,直达底部有粉丝专享福利!!!


😉毛遂自荐

毛遂自荐一下,给大家推荐一下自己的专栏😁,欢迎小伙伴们收藏关注😊

大厂面试题专栏

Java专栏

爬虫专栏

更多专栏尽在主页,点我😁!!!


🌝题目

点我 ! 力扣链接



🔥解题思路

题目要求返回结果——> 如果答案不止一个,返回长度最长且字典序最小的字符串。如果答案不存在,则返回空字符串。

可以得到的信息:1. 返回的字符串长度要长,在长度相等的情况下要字典序最小,2. 返回的字符串是可以通过删除 s 中的某些字符得到。

根据以上信息,可采用模拟法,即遍历 + 双指针

  1. 遍历list,对每一个字符串进行条件判断
  2. 通过双指针判断当前字符串是否可以通过删除 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爬虫、力扣题解、大厂面试题 四大系列,更有长时间总结的干货资源分享,后台回复:面试资料即可领取


最后,祝各位步步高升🚀🚀🚀

                                                   粉丝福利👇🏻👇🏻👇🏻

以上是关于✨Code皮皮虾通俗易懂,一次遍历 + 双指针怒解通过删除字母匹配到字典里最长单词的主要内容,如果未能解决你的问题,请参考以下文章

Code皮皮虾贪心And双指针快速解题:881. 救生艇

✨Code皮皮虾一次通过99.90%,思路详解找到需要补充粉笔的学生编号

Code皮皮虾双栈 + 贪心 思路讲解代码实现——>有效的括号字符串

✨Code皮皮虾多方法,全面注释解析,解决——>《36. 有效的数独》

Code皮皮虾求最长递增子序列的个数 不是长度哦(手动滑稽)!!!

Code皮皮虾求最长递增子序列的个数 不是长度哦(手动滑稽)!!!