算法第四周作业01
来源:互联网 发布:nginx golang 编辑:程序博客网 时间:2024/06/08 09:17
Description
Given a string, find the length of the longest substring without repeating characters.
Examples:
Given "abcabcbb"
, the answer is "abc"
, which the length is 3.
Given "bbbbb"
, the answer is "b"
, with the length of 1.
Given "pwwkew"
, the answer is "wke"
, with the length of 3. Note that the answer must be a substring, "pwke"
is a subsequence and not a substring.
Solution
1. 采用动态规划法;
2. 指定dp[i]数组为第i个字符结尾的最大不重复子字符串,即对于"abcabcbb",dp = {1,2,3,3,3,3,2,1};
3. dp[i]可以通过dp[i-1]来获得,例如当第(i-dp[i-1])到第(i-1)字符均与第i个字符不一致,则dp[i] = dp[i-1] + 1;
否则找到与第i个字符一直的元素的索引index,dp[i] = i-index;
Code
public int lengthOfLongestSubstring(String s) {int len = s.length();// 如果长度为0则直接返回if (len == 0) {return 0;}// 设置dpint[] dp = new int[len];// 转成char,方便比较char[] arr = s.toCharArray();// 初始化dp[0]dp[0] = 1;int max = 1;// 对dp的值逐个获取for (int i = 1; i < len; i++) {int j = i - 1;// 与之前的子字符串进行比较for (; j >= i - dp[i - 1]; j--) {if (arr[j] == arr[i]) {break;}}dp[i] = i - j;// 如果比之前所有最大子字符串还要大,则替换if (max < dp[i]) {max = dp[i];}}return max;}
0 0
- 算法第四周作业01
- 算法第四周作业
- 第四周算法作业
- 第四周作业 算法概论
- 算法第四周作业02
- 普林斯顿算法课第四周作业
- 算法作业_7(2017.3.16第四周)
- 算法课第四周作业 | Course Schedule
- 算法作业_8(2017.3.19第四周)
- 算法第十四周作业01
- C语言入门-第四周:作业01
- 第四周作业
- 第四周作业 1
- 第四周作业 4
- 第四周作业 2
- 第四周作业
- 第四周作业二
- 第四周作业三
- 大数据学习笔记之五十 推荐算法的距离算法和相似度算法
- 初识ajax
- 模拟基础之统计字符串中的英文单词数目
- bitset类简介
- PAT basic 1001
- 算法第四周作业01
- 蓝桥杯三角螺旋阵
- [费用流] BZOJ1070: [SCOI2007]修车
- 栈的实现
- kafka持久化原理
- cdhmanager 启动失误导致的满屏挂红
- LeetCode No.20 Valid Parentheses
- POJ 2488-A Knight's Journey(DFS-象棋中的马)
- Android_手机信息页面