【力扣】125. 验证回文串
发布日期:2021-06-29 19:44:08 浏览次数:4 分类:技术文章

本文共 1379 字,大约阅读时间需要 4 分钟。

题目:给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。

说明:本题中,我们将空字符串定义为有效的回文串。

示例 1:

输入: “A man, a plan, a canal: Panama”
输出: true

示例 2:

输入: “race a car”
输出: false

class Solution {
public boolean isPalindrome(String s) {
s = s.replace(" ", "");//去掉所有空格 s = s.replaceAll("[^a-zA-Z0-9\\u4E00-\\u9FA5]", "");//去掉除字母和数字汉字外字符 int j, i = s.length() / 2; if(s.length() % 2 == 0) j = s.length() / 2; else j = s.length() / 2 + 1; String str1 = s.substring(0, i);//取前一半的字符 String str2 = s.substring(j, s.length());//取后一半的字符 str2 = reverse(str2);//翻转后一半 return str1.equalsIgnoreCase(str2);//忽略大小写比较 } public String reverse(String s){
//翻转后一半 return new StringBuffer(s).reverse().toString(); }}

简化后

class Solution {
public boolean isPalindrome(String s) {
int start = 0, end = s.length() - 1; while(start < end){
if(!Character.isLetterOrDigit(s.charAt(start))){
//非字母或数字 start++; continue; } if(!Character.isLetterOrDigit(s.charAt(end))){
//非字母或数字 end--; continue; } if(Character.toLowerCase(s.charAt(start)) != Character.toLowerCase(s.charAt(end)))//转小写判断 return false; start++; end--; } return true; }}

转载地址:https://darkness.blog.csdn.net/article/details/104050652 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:【力扣】136. 只出现一次的数字
下一篇:【力扣】122. 买卖股票的最佳时机 II

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年04月08日 04时27分23秒