做渲染的网站,莱芜网站建设费用,备案期间关闭网站,重庆网站制作有名 乐云践新面试经典150题 day25 题目来源我的题解方法一 双指针方法二 双指针 空间优化 题目来源
力扣每日一题#xff1b;题序#xff1a;125
我的题解
方法一 双指针 首先去除掉字符串中的无用字符#xff0c;并将英文字符转换为小写#xff0c;然后使用双指针来判断是否是回文串… 面试经典150题 day25 题目来源我的题解方法一 双指针方法二 双指针 空间优化 题目来源
力扣每日一题题序125
我的题解
方法一 双指针 首先去除掉字符串中的无用字符并将英文字符转换为小写然后使用双指针来判断是否是回文串。 时间复杂度O(n) 空间复杂度O(n) public boolean isPalindrome(String s) {strimAndToLower(s);int ns.length();int left0,rightn-1;while(leftright){if(s.charAt(left)!s.charAt(right--)){return false;}}return true;
}
public String trimAndToLower(String s){StringBuilder sbnew StringBuilder();int ns.length();for(int i0;in;i){char chs.charAt(i);if((chachz)||(ch0ch9)){sb.append(ch);}else if(chAchZ){sb.append((char)(ch-Aa));}}return sb.toString();
}方法二 双指针 空间优化 不再去删除无效字符并将英文字符转为小写。而是在遍历过程中直接判断。 时间复杂度O(n) 空间复杂度O(1) public boolean isPalindrome(String s) {int ns.length();int left0,rightn-1;while(leftright){while(leftright!isUsedChar(s.charAt(left))){left;}while(leftright!isUsedChar(s.charAt(right))){right--;}if(toLower(s.charAt(left))!toLower(s.charAt(right--))){return false;}}return true;
}
public boolean isUsedChar(char ch){return (chachz)||(ch0ch9)||(chAchZ);
}
public char toLower(char ch){if((chachz)||(ch0ch9)){return ch;}else{return (char)(ch-Aa);}
}有任何问题欢迎评论区交流欢迎评论区提供其它解题思路代码也可以点个赞支持一下作者哈~