大一的时候老师上课的经典例子就是回文字符串判断,我觉得经典,也保留了下来。
很简单的判断,即字符串从前往后输出和从后往前输出都是一样的结果。是不是想到了什么,没错,就是栈(FIFO),用这个就可以很好的解决这个问题啦~
public
class
HuiWenString {
public
String isHuiWen(String
string
){
int
mid
;
int
top
=0;
char
[]
charOne
;
if
(
string
.length()==1)
return
"Yes"
;
mid
=
string
.length()/2;
charOne
=
new
char
[
mid
];
//System.
out
.println(
"mid="
+
mid
);
for
(
int
i
= 0;
i
<
mid
;
i
++){
charOne
[
i
]=
string
.charAt(
i
);
top
++;
}
top
--;
//charOne[top] = string.charAt(top);
//charOne[i-1] = string.charAt(i-1);
//System.
out
.println(
"top="
+
top
);
//
for
(
int
i
=0;
i
<
charOne
.
length
;
i
++)
//System.
out
.println(
"char="
+
charOne
[
i
]);
if
(
string
.length()%2==0){
System.
out
.println(
"s-mid="
+
string
.charAt(
mid
)+
"c-top="
+
charOne
[
top
]);
System.
out
.println(
string
.charAt(
mid
)!=
charOne
[
top
]);
if
(
string
.charAt(
mid
)!=
charOne
[
top
]){
return
"NO1"
;
}
else
{
top
--;
for
(
int
j
=
mid
+1;
j
<
string
.length()-1;
j
++)
if
(
string
.charAt(
j
)!=
charOne
[
top
--])
return
"NO2"
;
}
return
"YES"
;
}
else
for
(
int
k
=
mid
+1;
k
<
string
.length()-1;
k
++)
if
(
string
.charAt(
k
)!=
charOne
[
top
--])
return
"NO3"
;
if
(
top
==0)
return
"YES"
;
return
"Error"
;
}
public
static
void
main(String[]
args
) {
Scanner
scanner
=
new
Scanner(System.
in
);
System.
out
.println(
"请输入待判断的字符串:"
);
String
string
=
scanner
.nextLine();
HuiWenString
huiWenString
=
new
HuiWenString();
System.
out
.println(
huiWenString
.isHuiWen(
string
));
}
}