您的位置:首页 > 编程语言 > Java开发

125. 验证回文串 Java

2019-03-27 14:37 288 查看

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

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

示例 1:

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

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

思路:遇到不是数字和字符的跳过,一个指针从前向后,一个从后向前,对应比较
1 空间换时间

class Solution {
public boolean isPalindrome(String s) {

String s2 = s.toLowerCase();
//System.out.println(s2);

char ch[] = new char[s2.length()];
int count = 0;

for(int i=0;i<s2.length();i++)
{
if(s2.charAt(i)>='a' && s2.charAt(i) <= 'z'|| s2.charAt(i)>='0' && s2.charAt(i) <= '9')

{
ch[count] = s2.charAt(i);

count++;
}
}

for(int start=0,end =count-1;start<end;start++,end--)
{
if(ch[start] != ch[end]){
return false;
}
}

return true;
}
}

2 时间换空间 --用到了Character封装的判断字母数字的函数

class Solution {
public boolean isPalindrome(String s) {
int i = 0, j = s.length() - 1;
s = s.toLowerCase();
while(i < j) {
if (!Character.isLetterOrDigit(s.charAt(i))) {
i++;
continue;
}
if (!Character.isLetterOrDigit(s.charAt(j))) {
j--;
continue;
}
if (s.charAt(j) != s.charAt(i)) {
return false;
}
i++;
j--;
}
return true;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: