本系列文章记录labuladong的算法小抄中剑指offer题目
【剑指offer刷题记录 java版】数组双指针 之 其它题目
剑指 Offer II 018. 有效的回⽂
题目链接:https://leetcode.cn/problems/XltzEq/
class Solution {
public boolean isPalindrome(String s) {
// 先把所有字符转化成小写,并过滤掉空格和标点这类字符
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (Character.isLetterOrDigit(c)) {
sb.append(Character.toLowerCase(c));
}
}
// 然后对剩下的这些目标字符执行双指针算法,判断回文串
s = sb.toString();
int left = 0;
int right = s.length()-1;
while(right>left){
if(s.charAt(left)!=s.charAt(right)){
return false;
}
left++;
right--;
}
return true;
}
}
剑指 Offer 58 - I. 翻转单词顺序
题目链接:https://leetcode.cn/problems/fan-zhuan-dan-ci-shun-xu-lcof/
//先反转整个字符串,再逐个单词反转
class Solution {
public String reverseWords(String s) {
StringBuilder sb = trimSpaces(s);
//整个字符串反转
sb = sb.reverse();
//逐个单词反转
return reverseWord(sb);
}
//去除多余空格
public StringBuilder trimSpaces(String s) {
int left = 0