Java教程

剑指offer计划10(动态规划中等版)---java

本文主要是介绍剑指offer计划10(动态规划中等版)---java,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1.1、题目1

剑指 Offer 46. 把数字翻译成字符串

1.2、解法

今天两题 都不会,泪目

1.3、代码

class Solution {
    public int translateNum(int num) {
        String src = String.valueOf(num);
        int p = 0, q = 0, r = 1;
        for (int i = 0; i < src.length(); ++i) {
            p = q; 
            q = r; 
            r = 0;
            r += q;
            if (i == 0) {
                continue;
            }
            String pre = src.substring(i - 1, i + 1);
            if (pre.compareTo("25") <= 0 && pre.compareTo("10") >= 0) {
                r += p;
            }
        }
        return r;
    }
}

2.1、题目2

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

2.2、解法

这题写了一遍不知道为啥就是有点小问题,还是copy答案方便~~~,

这题不太明白,后面花点时间研究下啊。

2.3、代码

class Solution {
    public int lengthOfLongestSubstring(String s) {
        Map<Character, Integer> dic = new HashMap<>();
        int res = 0, tmp = 0;
        for(int j = 0; j < s.length(); j++) {
            int i = dic.getOrDefault(s.charAt(j), -1); // 获取索引 i
            dic.put(s.charAt(j), j); // 更新哈希表
            tmp = tmp < j - i ? tmp + 1 : j - i; // dp[j - 1] -> dp[j]
            res = Math.max(res, tmp); // max(dp[j - 1], dp[j])
        }
        return res;
    }
}


这篇关于剑指offer计划10(动态规划中等版)---java的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!