赞
踩
双指针验证回文数字/回文字符串
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1:
输入: 121
输出: true
示例 2:
输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
class Solution {
public boolean isPalindrome(int x) {
String str = String.valueOf(x);
int i = 0;
int j = str.length()-1;
for(i = 0 ;i<j; i++,j--){
if(str.charAt(i) != str.charAt(j)){
return false;
}
}
return true;
}
}
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
示例 1:
输入: “A man, a plan, a canal: Panama”
输出: true
示例 2:
输入: “race a car”
输出: false
class Solution { public boolean isPalindrome(String s) { //题目中需要忽略大小写 //全部换成小写 s = s.toLowerCase(); //只考虑小写字母和数字 //正则表达式:[^0-9a-z],代表除了0-9a-z以外的字符 //[0-9a-z]代表0-9a-z的字符 s =s.replaceAll("[^0-9a-z]",""); int i = 0; int j = s.length()-1; for(i = 0; i<j; i++,j--){ if(s.charAt(i) != s.charAt(j)){ return false; } } return true; } }
给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。
示例 1:
输入: “aba”
输出: True
示例 2:
输入: “abca”
输出: True
解释: 你可以删除c字符。
class Solution { public boolean validPalindrome(String s) { //双指针法 int i = 0; int j = s.length()-1; for(i = 0; i<j; i++,j--){ if(s.charAt(i) != s.charAt(j)){ //这时判断删除一个字符能否组成回文串 //需要调用方法来完成判断 return isPalindrome(s,i+1,j) || isPalindrome(s,i,j-1); } } return true; } //功能:判断在区间【i,j】之间的字符串是否为回文字符串 public boolean isPalindrome(String s , int i, int j){ for(; i<j ; i++,j--){ if(s.charAt(i) != s.charAt(j)){ return false; } } return true; } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。