一、题目
1、审题
2、分析
判断所给的字符串(只考虑数字、字母)是否为回文。
二、解答
1、思路:
方法一、
用 start、end 指针分别从 s 的开头和结尾开始遍历,并进行比较。
public boolean ispalindrome(String s) { int len = s.length(); if(len == 0) return true; int start = 0,end = len - 1; while(start < end) { char c1 = s.charat(start); char c2 = s.charat(end); if(!Character.isLetterOrDigit(c1)) start++; else if(!Character.isLetterOrDigit(c2)) end--; else if(Character.toLowerCase(c1) == Character.toLowerCase(c2)) { start++; end--; } else return false; } return true; }
方法二、
先采用正则替换掉 s 中的非数字、字母,在翻转 s 与原串进行比较。
public boolean ispalindrome2(String s) { s = s.replaceAll("[^A-Za-z0-9]","").toLowerCase(); String tmp = new StringBuffer(s).reverse().toString(); return s.equals(tmp); }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。