判断回文串
判断一个字符串是否是回文串,首先了解下它的定义“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。
所以判断是否是回文串,判断这个字符串是否对称即可。从而用两个指针同时向中间扫描即可判断。
/**
* 判断字符串是否是回文串,即判断是否对称。 两边指针同时向中间扫描,判断是否相等,不等则证明不是回文串,返回false
* 否则相遇退出,就是回文,返回true
*
* @param s
* @return
*/
public static boolean isPalindrome(String s) {
int low = 0;
int high = s.length() - 1;
// 当字符串有奇数个字符时,不用检查中间字符
while (low < high) {
if (s.charAt(low) != s.charAt(high)) {
return false;
}
low++;
high--;
}
return true;
}
判断回文数
判断一个数字是否是回文数
首先可以想到的算法是,把数字转化成字符串,然后使用上边的算法进行判断。如果不允许转化为字符串。
分析下,回文数其实就是把当前数字颠倒,然后还是与这个数字相等的数字。
/**
* 判断回文数,这里不考虑负数,即颠倒当前数字,判断两个数字是否相等,相等即是回文数
*
* @param num
* @return
*/
public static boolean isPalindromeNumber( int num) {
int oldNum = num ;
int newNum = 0;
//颠倒数字
while (oldNum > 0) {
newNum = newNum * 10 + oldNum % 10;
oldNum = oldNum / 10;
}
if (num ==newNum ){
return true ;
} else {
return false ;
}
}
待续。。