当前位置:   article > 正文

力扣随笔之通过删除字母匹配到字典里最长单词(中等524)

力扣随笔之通过删除字母匹配到字典里最长单词(中等524)

思路:根据题意有两个问题待解决

        1、s字符串中是否可以通过删减得到该英语词语

        2、如何找到长度最长且字母序最小的字符串

针对第二个问题可以对词典dictionary进行预处理:根据长度降序和字母序升序来排序

针对第一个问题可以初始化两个指针i,j分别指向s和英文单词的首位字母开始遍历,若字母相同,则两个指针i,j同时自加,若不同则i自加,寻找s中与英文单词对应位置字母相同的字母;最后当j的大小等于单词长度则说明s可以通过删减得到这个单词,并将其返回

Java实现:

  1. class Solution {
  2. public String findLongestWord(String s, List<String> dictionary) {
  3. Collections.sort(dictionary,new Comparator<String>(){
  4. public int compare(String word1,String word2){
  5. if(word1.length() != word2.length()){
  6. //word1 > word2 返回负整数
  7. //word1 < word2 返回正整数
  8. return word2.length() - word1.length();
  9. }else {
  10. //word1 > word2 返回正整数
  11. //word1 < word2 返回负整数
  12. return word1.compareTo(word2);
  13. }
  14. }
  15. });
  16. for(String t : dictionary){
  17. int i = 0,j = 0;//i指向s,j指向t
  18. while(i < s.length() && j < t.length()){
  19. if(s.charAt(i) == t.charAt(j)){
  20. i++;
  21. j++;
  22. }else {
  23. i++;
  24. }
  25. }
  26. if(j == t.length()){
  27. return t;
  28. }
  29. }
  30. return "";
  31. }
  32. }

Java给字符串排序那块我看的别人的代码,不是特别理解,希望能有大佬来讲解一下,感谢观看,也欢迎订阅我的力扣随笔,会持续分享解题思路

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/146027
推荐阅读
相关标签
  

闽ICP备14008679号