• 【LeetCode】524-通过删除字母匹配到字典里最长单词


    题目描述

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

    示例 1:

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

    示例 2:

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

    说明:

    1. 所有输入的字符串只包含小写字母。
    2. 字典的大小不会超过 1000。
    3. 所有输入的字符串长度不会超过 1000。

    解题思路

    1. 通过双指针查看字典中的一个字符串是不是给定字符串的子序列
    2. 通过compareTo在同样长度下,找到字典顺序更小的那个
    public String findLongestWord(String s, List<String> d) {
        String longestWord = "";
        for (String str : d){
            int l1 = longestWord.length();
            int l2 = str.length();
            if (isSubsequence(s, str)){
                if (l2 > l1 || (l2 == l1) && str.compareTo(longestWord)<0)
                    longestWord = str;
            }
        }
        return longestWord;
    }
    
    private boolean isSubsequence(String s, String target){
        int i = 0, j = 0;
        while (i < s.length() && j < target.length()){
            if (s.charAt(i) == target.charAt(j))
                j++;
            i++;
        }
        return j == target.length();
    }
    
  • 相关阅读:
    Linux常用命令
    ServerSocketChannel和SocketChannel
    Java扫描包
    [BZOJ3874/AHOI2014]宅男计划
    [BZOJ4029/HEOI2015]定价
    [考试]20151012贪心
    [BZOJ4027/HEOI2015]兔子与樱花
    [考试]20151010
    [考试]20151009
    Test of String
  • 原文地址:https://www.cnblogs.com/yuzhenzero/p/10691943.html
Copyright © 2020-2023  润新知