ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Leetcode刷题100天—524. 通过删除字母匹配到字典里最长单词(双指针)—day38

2021-10-06 15:33:08  阅读:210  来源: 互联网

标签:day38 dictionary get 524 字符串 100 字典 string left


前言:

作者:神的孩子在歌唱

大家好,我叫运智

image-20210914113807242

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

难度中等192收藏分享切换为英文接收动态反馈

给你一个字符串 s 和一个字符串数组 dictionary 作为字典,找出并返回字典中最长的字符串,该字符串可以通过删除 s 中的某些字符得到。

如果答案不止一个,返回长度最长且字典序最小的字符串。如果答案不存在,则返回空字符串。

示例 1:

输入:s = "abpcplea", dictionary = ["ale","apple","monkey","plea"]
输出:"apple"

示例 2:

输入:s = "abpcplea", dictionary = ["a","b","c"]
输出:"a"

提示:

  • 1 <= s.length <= 1000
  • 1 <= dictionary.length <= 1000
  • 1 <= dictionary[i].length <= 1000
  • sdictionary[i] 仅由小写英文字母组成
package 双指针;

import java.util.List;

/*
 * https://leetcode-cn.com/problems/longest-word-in-dictionary-through-deleting/
 *通过遍历每个数组的字符一一匹配
 *解释:字典序是指从前到后比较两个字符串的大小的方法。首先比较第一个字符,如果不同则第一个字符较小的字符串更小,
 *如果相同则继续比较第2个字符......如此继续,来比较整个字符串的大小。
 */
public class _524_通过删除字母匹配到字典里最长单词 {
    public String findLongestWord(String s, List<String> dictionary) {
//    	定义返回字符串
    	String string="";

    	for(int i=0;i<dictionary.size();i++) {
//        	定义双指针,一个指向s,一个指向dictionary
        	int s_left=0,d_left=0;
//    		遍历每一个字符
    		while(s_left<s.length()&&d_left<dictionary.get(i).length()) {
    			if (dictionary.get(i).charAt(d_left)==s.charAt(s_left)) {
					d_left++;
				}
    			s_left++;
    		}
//    		如果s_left还在s中,说明是匹配完了d_left指向的字符的
    		if (d_left==dictionary.get(i).length()) {
//				将sting字符串和这个新的字符串作比较,比较依据是最长且字典顺序最小,通过compareTo来比较字符串的ascll码
                if (dictionary.get(i).length() > string.length() || (dictionary.get(i).length() == string.length() && dictionary.get(i).compareTo(string) < 0)) {
                	string = dictionary.get(i);
                }

			}

    	}
    	return string;
    }

	
}

本人csdn博客:https://blog.csdn.net/weixin_46654114

转载说明:跟我说明,务必注明来源,附带本人博客连接。

标签:day38,dictionary,get,524,字符串,100,字典,string,left
来源: https://blog.csdn.net/weixin_46654114/article/details/120625117

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有