题目
解法
/**
* 判断输入的字符串是否为回文字符串
*
* @param s
* @return
*/
public static boolean isPalindromic(String s) {
if (s == null || s.length() == 0) return false;
Stack<Character> mStack = new Stack();
// 找出中心点索引
int mid = s.length() / 2 - 1;
int next;
// 找出中间点后一个元素
if (s.length() % 2 == 0) {
next = mid + 1;
} else {
next = mid + 2;
}
// 前半段入栈
for (int i = 0; i <= mid; i++) {
mStack.push(s.charAt(i));
}
// 出栈比对值
for (int j = next; j < s.length(); j++) {
if (mStack.pop() != s.charAt(j)) {
break;
}
}
return mStack.isEmpty();
}
main方法
public static void main(String[] args) {
String s1 = "aabaa";
String s2 = "aabba";
System.out.println(isPalindromic(s1));
System.out.println(isPalindromic(s2));
}
日志
true
false