这个求回文最小子串算法为啥下面要减1
public String longestPalindrome(String s) {
if (s == null || s.length() < 1) return "";
int start = 0, end = 0;
for (int i = 0; i < s.length(); i++) {
int len1 = expandAroundCenter(s, i, i);
int len2 = expandAroundCenter(s, i, i + 1);
int len = Math.max(len1, len2);
if (len > end - start) {
start = i - (len - 1) / 2;
end = i + len / 2;
}
}
return s.substring(start, end + 1);
}
private int expandAroundCenter(String s, int left, int right) {
int L = left, R = right;
while (L >= 0 && R < s.length() && s.charAt(L) == s.charAt(R)) {
L--;
R++;
}
return R - L - 1;
}
if (s == null || s.length() < 1) return "";
int start = 0, end = 0;
for (int i = 0; i < s.length(); i++) {
int len1 = expandAroundCenter(s, i, i);
int len2 = expandAroundCenter(s, i, i + 1);
int len = Math.max(len1, len2);
if (len > end - start) {
start = i - (len - 1) / 2;
end = i + len / 2;
}
}
return s.substring(start, end + 1);
}
private int expandAroundCenter(String s, int left, int right) {
int L = left, R = right;
while (L >= 0 && R < s.length() && s.charAt(L) == s.charAt(R)) {
L--;
R++;
}
return R - L - 1;
}

...全文
相关推荐
1、基础算法必练题(含解法)).pdf
这些题目涵盖了基础算法和数据结构的核心概念,是学习和提升编程技能的重要练习。下面是对每个题目及其解法的详细介绍:1.
机试高频考点.docx
滑动窗口算法的时间复杂度通常为O(N),比暴力方法更优。1. 滑动窗口问题:例如求字符串中最长的无重复字符子串。
leetcode76-LeetCode76_MinimumWindowSubstring:LeetCode76_MinimumWindowSu
这道题目要求找到一个给定字符串中最小子串,该子串包含了另一个给定的字符集(目标字符集)的所有字符。这是一个字符串处理和滑动窗口算法的应用问题。
练习SCL写函数块处对字符串进行处理,查找一个字符串内涵盖另一个字符串所有字符的最小的字符串
通过实践和调试,我们可以创建一个功能完善的函数块,有效地找出字符串s中涵盖字符串t所有字符的最小子串。
76最小覆盖子串.zip
滑动窗口方法的基本思想是维护一个动态的子串范围,随着算法的迭代逐步缩小范围以找到包含T中所有字符的最小子串。


