剑指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;
    }
}


posted @ 2021-09-10 19:48  程序员khaos  阅读(36)  评论(0编辑  收藏  举报