一、运用栈
function Stack() {
this.dataStore = [];
this.top = 0;//top的值等同于数组内的元素个数
this.push = push;
this.pop = pop;
}
function push(element) {
this.dataStore[this.top++] = element;
}
function pop() {
return this.dataStore[--this.top];
}
function isPalindrome(word) {
var s = new Stack();//新建栈,以便将数组中的元素压入栈
for ( var i = 0; i < word.length; ++i) {
s.push(word[i]);
}
var rword = "";
while (s.top > 0) {
rword += s.pop();//将新栈中的元素通过pop()方法翻转
}
if (word == rword) {
return true;
} else {
return false;
}
}
var word = "hello";
if (isPalindrome(word)) {
alert(word + " is a palindrome.");
} else {
alert(word + " is not a palindrome.");
}
word = "racecar";
if (isPalindrome(word)) {
alert(word + " is a palindrome.");
} else {
alert(word + " is not a palindrome.");
}
二、间接使用数组的reverse()方法
function isPalindrome(word) {
var a = word.split("");//将字符串转化为数组,split()中""必不可少
var b = a.join();//将数组转化为字符串
var a1 = a.reverse();
var b1 = a1.join();
if (b == b1) {//字符串可以运用"==",数组不可以
return true;
} else {
return false;
}
}
var word = "hello";
if (isPalindrome(word)) {
alert(word + " is a palindrome.");
} else {
alert(word + " is not a palindrome.");
}
word = "racecar";
if (isPalindrome(word)) {
alert(word + " is a palindrome.");
} else {
alert(word + " is not a palindrome.");
}