您的位置:首页 > 产品设计 > UI/UE

[LeetCode]Unique Substrings in Wraparound String

2016-12-08 10:12 399 查看
https://leetcode.com/problems/unique-substrings-in-wraparound-string/

dp保存26个字母结尾的子字符串数目,遍历整个字符串,以当前字符串结尾的最大满足条件的子字符串数目值就是Math.max(以当前字符结尾的满足条件的字符串长度,之前保存的dp)

public class Solution {
public int findSubstringInWraproundString(String p) {
if (p == null || p.length() == 0) {
return 0;
}
// dp保存以每个字母开头的子数组最大数目
int[] dp = new int[26];
int maxLenCur = 0;
for (int i = 0; i < p.length(); i++) {
if (i > 0 && (p.charAt(i) - p.charAt(i - 1) == 1 || p.charAt(i - 1) - p.charAt(i) == 25)) {
maxLenCur++;
} else {
maxLenCur = 1;
}
int index = p.charAt(i) - 'a';
// 以index处字母开头的最大值,是之前的最大值和以index结尾的字符串长度的比较。
// 一个字符串之中包含结尾字符的子字符串数目就是该字符串的长度。
dp[index] = Math.max(dp[index], maxLenCur);
}
int sum = 0;
for (int i = 0; i < 26; i++) {
sum += dp[i];
}
return sum;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: