码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode做过的“最长”

时间:2021-05-24 16:53:00      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:ash   bsp   break   情况   ons   toc   没有   重复元素   hash   

14. 最长公共前缀

class Solution {
    public String longestCommonPrefix(String[] strs) {
        if(strs.length == 0) return "";
        //初始化,res为第一个字符串
        String res = strs[0];
        //依次与每个字符串比较,碰到不一样的用substring截取相同的部分
        for(int i = 1; i < strs.length; i++){
            int j = 0;
            for(; j < res.length() && j < strs[i].length(); j++){
                if(res.charAt(j) != strs[i].charAt(j))
                    break;
            }
            res = res.substring(0,j);
        }
        return res;
    }
}

剑指 Offer 48. 最长不含重复字符的子字符串

class Solution {
    public int lengthOfLongestSubstring(String s) {
        HashMap<Character, Integer> map = new HashMap<>();
        int tmp = 0, res = 0;
        for(int j = 0; j < s.length(); j++){
            int i = map.getOrDefault(s.charAt(j), -1);
            map.put(s.charAt(j), j);
            //tmp用来存放以字符s[j]为结尾的 “最长不重复子字符串” 的长度
            //哈希表中没有重复的情况下,j++,而i始终为-1
            //则问号前的式子永远为真,j往后移,最长不重复字串长度也+1
            //哈希表中有重复的情况下,更新为j-i,i是哈希表中找到的重复元素的下标
            tmp = tmp < j - i ? tmp + 1 : j - i;
            res = Math.max(tmp, res);
        }
        return res;
    }
}

1143. 最长公共子序列

class Solution {
    public int longestCommonSubsequence(String text1, String text2) {
        int m = text1.length(), n = text2.length();
        char[] sc1 = text1.toCharArray();
        char[] sc2 = text2.toCharArray();
        //dp[i][j] 代表sc1 的前i-1个字符、sc2的前j?1的字符,形成的最长公共子序列长度
        //dp[m][n] 就是答案
        int dp[][] = new int[m+1][n+1];
        for(int i = 1; i <= m; i++){
            for(int j = 1; j <= n; j++){
                //两个字符串最后一位相等,最长公共子序列+1
                if(sc1[i-1] == sc2[j-1])
                    dp[i][j] = dp[i-1][j-1] + 1;
                //不相等,取两项中较大的一项
                else
                    dp[i][j] = Math.max(dp[i-1][j], dp[i][j-1]);
            }
        }
        return dp[m][n];
    }
}

 

leetcode做过的“最长”

标签:ash   bsp   break   情况   ons   toc   没有   重复元素   hash   

原文地址:https://www.cnblogs.com/deerlet/p/14787613.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!