第三章:字符串
面试题14:字符串中的变位词
题目
参考代码
public boolean checkInclusion(String s1, String s2) {
if (s2.length() >= s1.length()) {
int[] counts = new int[26];
for (int i = 0; i < s1.length(); ++i) {
counts[s1.charAt(i) - 'a']++;
counts[s2.charAt(i) - 'a']--;
}
if (areAllZero(counts)) {
return true;
}
for (int i = s1.length(); i < s2.length(); ++i) {
counts[s2.charAt(i) - 'a']--;
counts[s2.charAt(i - s1.length()) - 'a']++;
if (areAllZero(counts)) {
return true;
}
}
}
return false;
}
private boolean areAllZero(int[] counts) {
for (int count : counts) {
if (count != 0) {
return false;
}
}
return true;
}面试题15:字符串中的所有变位词
题目
参考代码
面试题16:不含重复字符的最长子字符串
题目
参考代码
解法一
解法二
面试题17:含有所有字符的最短字符串
题目
参考代码
面试题18:有效的回文
题目
参考代码
面试题19:最多删除一个字符得到回文
题目
参考代码
面试题20:回文子字符串的个数
题目
参考代码
Last updated