验证回文串
来源:LeetCode
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
示例 1:
输入: "A man, a plan, a canal: Panama"
输出: true
解释:"amanaplanacanalpanama" 是回文串
思路:
1.正则表达式去除符号
2.统一大小写
3.双指针匹配
4.输入的字符串为空
代码
public class YanZhenHuiwen {
/**
* 验证回文串
* 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
* 说明:本题中,我们将空字符串定义为有效的回文串。
* 示例 1:
* 输入: "A man, a plan, a canal: Panama"
* 输出: true
* @param s
* @return
*/
public boolean isPalindrome(String s) {
// 1.正则表达式去除符号
String s1 = s.replaceAll("[^A-Za-z0-9]", "");
// 2.统一大小写
String s2 = s1.toLowerCase();
// 3.双指针匹配
int i = 0;
int j = s2.length() - 1;
boolean flag = false;
while (i <= j) {
if (s2.charAt(i) != s2.charAt(j)) {
return flag = false;
}
i++;
j--;
flag = true;
}
// 输入的字符串为空时,即i为0,j为-1
if(i>j){
flag=true;
}
System.out.println(flag);
return flag;
}
public static void main(String[] args) {
YanZhenHuiwen huiwen = new YanZhenHuiwen();
String str = "race a car";
huiwen.isPalindrome(str);
}
}

浙公网安备 33010602011771号