“xyxzyx”是一个回文字符串,所谓回文字符串就是指正读反读均相同的字符序列,通过栈这个数据结构判断一个字符串是否是回文字符串。
输入:xyzyx
输出:yes
示例代码如下:
import
java.util.Scanner;
public
class
ExampleJiemiHuiwen {
public
static
void
main(String[] args) {
String str =
new
String();
Scanner cin =
new
Scanner(System.
in
);
str = cin.next();
cin.close();
char
a[] = str.toCharArray();
int
len = a.
length
;
int
mid;
mid = len / 2 - 1;
// mid不是中点的下标,而是需要进栈的最后一个字符的下标
// 堆栈
char
stack[] =
new
char
[101];
int
top = -1;
for
(
int
i = 0; i <= mid; i++) {
top++;
stack[top] = a[i];
}
// 开始匹配
int
next;
//next表示待测字符数组后半段需要进行字符匹配的初始下标
if
(len % 2 == 0) {
next = mid + 1;
}
else
{
next = mid + 2;
}
for
(
int
i = next; i < len; i++) {
if
(stack[top] == a[i]){
top--;
}
else
{
break
;
}
}
//栈空的标志是top==1,如果栈空了,则说明栈内所有的字符被一一匹配了
if
(top == -1) {
System.
out
.println(
"yes"
);
}
else
{
System.
out
.println(
"no"
);
}
}
}