赞
踩
思路:根据题意有两个问题待解决
1、s字符串中是否可以通过删减得到该英语词语
2、如何找到长度最长且字母序最小的字符串
针对第二个问题可以对词典dictionary进行预处理:根据长度降序和字母序升序来排序
针对第一个问题可以初始化两个指针i,j分别指向s和英文单词的首位字母开始遍历,若字母相同,则两个指针i,j同时自加,若不同则i自加,寻找s中与英文单词对应位置字母相同的字母;最后当j的大小等于单词长度则说明s可以通过删减得到这个单词,并将其返回
Java实现:
- class Solution {
- public String findLongestWord(String s, List<String> dictionary) {
- Collections.sort(dictionary,new Comparator<String>(){
- public int compare(String word1,String word2){
- if(word1.length() != word2.length()){
- //word1 > word2 返回负整数
- //word1 < word2 返回正整数
- return word2.length() - word1.length();
- }else {
- //word1 > word2 返回正整数
- //word1 < word2 返回负整数
- return word1.compareTo(word2);
- }
- }
- });
- for(String t : dictionary){
- int i = 0,j = 0;//i指向s,j指向t
- while(i < s.length() && j < t.length()){
- if(s.charAt(i) == t.charAt(j)){
- i++;
- j++;
- }else {
- i++;
- }
- }
- if(j == t.length()){
- return t;
- }
- }
- return "";
- }
- }

Java给字符串排序那块我看的别人的代码,不是特别理解,希望能有大佬来讲解一下,感谢观看,也欢迎订阅我的力扣随笔,会持续分享解题思路
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。