[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;
}
}
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;
}
}
相关文章推荐
- MiniGui开发:Ubuntu14.04环境安装qvfb工具
- 我的权限系统设计实现MVC4 + WebAPI + EasyUI + Knockout(转)
- String,StringBuffer与StringBuilder的区别
- vue实现多种复选框,含搜索
- url模块和querystring模块
- 更新证书,打包异常"UUID not found"
- SQL Server 扩展事件(Extented Events)从入门到进阶(2)——在GUI中创建基础扩展事件
- SQL Server 扩展事件(Extented Events)从入门到进阶(2)——在GUI中创建基础扩展事件
- SQL Server 扩展事件(Extented Events)从入门到进阶(2)——在GUI中创建基础扩展事件
- ChromeDriver和chrome浏览器的版本不一致导致的UI自动化问题
- UIPopoverController使用详解
- 调用线程无法访问此对象,因为另一个线程拥有该对象
- 面向UI编程框架:ui.js框架思路详细设计
- UITableView使用总结
- HDU 2227 Find the nondecreasing subsequences dp思想 + 树状数组
- solr6.3.0 AdminUI查询中各参数的含义
- QT学习笔记之Qt4#include <QtGui>包含常用的头文件在Qt5中无效
- android UI注册登录界面
- arduino简易流水灯(新手之路)
- field module的on input和on request区别