首页 > 其他分享 >通过删除字母匹配到字典里最长单词

通过删除字母匹配到字典里最长单词

时间:2024-02-03 23:24:39浏览次数:15  
标签:word String 字母 longestWord 单词 字符串 最长 字典

问题描述:给定一个字符串和一个字符串字典,找到字典里面最长的字符串,该字符串可以通过删除给定字符串的某些字符来得到。如果答案不止一个,返回长度最长且字典顺序最小的字符串。如果答案不存在,则返回空字符串。

示例 1:
输入:
s = "abpcplea", d = ["ale","apple","monkey","plea"]
输出: 
"apple"

示例 2:
输入:
s = "abpcplea", d = ["a","b","c"]
输出: 
"a"

说明:

  1. 所有输入的字符串只包含小写字母。
  2. 字典的大小不会超过 1000。
  3. 所有输入的字符串长度不会超过 1000。
public String findLongestWord(String s, List<String> d) {
        String longestWord = ""; //当前在字典中最长的单词
        for(String word : d){
            int l1 = longestWord.length();
            int l2 = word.length();
            if((l1>l2) ||
                    (l1==l2 && longestWord.compareTo(word)<0)){
                //longWord 单词已经比 word 单词长了,不考虑该 word
                //longWord 和 word 一样长,但是 longWord 字典顺序更小,也不考虑该 word
                continue;
            }
            if(isValid(s,word)){
                longestWord = word;
            }
        }
        return longestWord;
    }

    //TODO:判断 word 是否通过删除 s 的某些字符来得到。
    private boolean isValid(String s,String word){
        int i=0,j=0;
        while(i<s.length() && j<word.length()){
            if(s.charAt(i) == word.charAt(j)){
                j++;
            }
            i++;
        }
        return j == word.length();
    }

参考:

标签:word,String,字母,longestWord,单词,字符串,最长,字典
From: https://www.cnblogs.com/i9code/p/18005396

相关文章

  • 反转字符串中元音字母
    问题描述:编写一个函数,以字符串作为输入,反转该字符串中的元音字母。示例1:输入:"hello"输出:"holle"示例2:输入:"leetcode"输出:"leotcede"classSolution{publicStringreverseVowels(Strings){if(s.length()<=1){return......
  • 跟着王洋老师学编程 - 1.8 打字母游戏
    案例简述在一个300*400的窗体上,有10个随机产生的字母向下落,在键盘上敲字母,如果对了就消掉,初始成绩为1000分,每敲对一个字母加10分,如果字母落到屏幕下方,或者敲错扣100分。我的思路-创建一个窗体-创建一个字母画布类——继承画布类Panel、编写构造方法以初始化数据,实现多线程......
  • 英语背单词 专四词汇 2024年02月 ChatGPT
    2024-02-02 2024-02-01IndexWordPronunciationPartsofSpeechExplanationTranslationinChinese1heel/hiːl/nounThebackpartofthefootbelowtheankle,typicallycorrespondingtothelocationofthebacktwo-thirdsoftheshoe.脚后跟2p......
  • Trie 字典树
    【Trie树】我们试图给每一个字符串一个对应的值。但是由于字符串长度不定,也不是数字,所以不能用数组。有几种办法:STLmap,二叉排序树(平衡树),\(O(\log(n)\cdotlen)\)。\(len\)为字符串长度。Trie,插入删除查询都是\(O(len)\)的。但是对空间有要求,每一个位置上可能的字符......
  • 代码随想录算法训练营第八天| 344.反转字符串 541. 反转字符串II 卡码网:54.替换数字
    反转字符串编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用O(1)的额外空间解决这一问题。题目链接:344.反转字符串-力扣(LeetCode)关于是否用reverse函数解决问题:如果题目......
  • 字典
    表示形式dic_1={'a':22,'b':'f'}print(dic_1)print('*'*50)dic_2=dict(a=1,b=2,c=5)print(dic_2){'a':22,'b':'f'}**************************************************{'a':1,&#......
  • 代码随想录 day36 无重叠区间 划分字母区间 合并区间
    无重叠区间这里的思路是找到有几个非重叠区间然后总数减去非重叠区间就是剩下的重叠区间数首先排好序按左或者右都可以这里按左排好然后发现边界不重叠就++边界重叠那么由于左边界优先对齐了所以右边界更新作为一个新的整体区间和下一个区间比较划分字母区间......
  • python 一个能统计txt文件的每个单词出现次数的python程序; 统计txt文件里每个汉字出
    输出的时候排列顺序是从多到少,需要去除txt中的特殊符号,注意是英文txt文件用来自制词汇包的hhhimportrefromcollectionsimportCounterdefcount_words(file_path):#读取文本文件内容withopen(file_path,'r',encoding='utf-8')asfile:text=file.read......
  • 151. 反转字符串中的单词(中)
    目录题目法一、双指针法二、字符串常用操作题目给你一个字符串s,请你反转字符串中单词的顺序。单词是由非空格字符组成的字符串。s中使用至少一个空格将字符串中的单词分隔开。返回单词顺序颠倒且单词之间用单个空格连接的结果字符串。注意:输入字符串s中可能会......
  • B2135 单词替换 (变式)
    点击查看代码#include<bits/stdc++.h>usingnamespacestd;chars[210],a[110],b[110];intla,lb,ls,nowtop,nowend=-1,nowoutput=1;intmain(){while(1){charnow_input;scanf("%c",&now_input);if(now_input==�......