您的位置:首页 > 大数据 > 人工智能

leetcode 125 Vaild Palindrome

2015-10-24 14:14 453 查看
验证是否为回文

题目要求:给出一个字符串,验证其是否为回文(忽略非字母字符并忽略大小写)

tags:String, Two Pointer

一般验证是否为回文使用two pointer,比较头尾指针是否相同,做该题时还需要忽略非字母字符,并将字符都转换为小写(或大写)再进行比较。

public boolean isPalindrome(String s) {
int head=0;
int tail=s.length()-1;
while(head<tail){
char h = Character.toLowerCase(s.charAt(head));
char t = Character.toLowerCase(s.charAt(tail));
if(!Character.isLetter(h)&&!Character.isDigit(h)){
head++;
continue;
}
if(!Character.isLetter(t)&&!Character.isDigit(t)){
tail--;
continue;
}
if(h!=t){
return false;
}
tail--;
head++;
}
<span style="white-space:pre">	</span>return true;
}


还有另一种取巧的办法:使用正则表达式,去掉其中非字幕的字符,并将字符串全部转为小写(或大写),再翻转,比较两个字符串是否相同。这些都可以用java自带的函数来解决。

public boolean isPalindrome2(String s) {
<span style="white-space:pre">	</span>String actual = s.replaceAll("[^A-Za-z0-9]", "").toLowerCase();
String rev = new StringBuffer(actual).reverse().toString();
return actual.equals(rev);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: