回文是指这样一种现象: 一个单词、 短语或数字, 从前往后写和从后往前写都是一样的。比如, 单词“dad”、“racecar” 就是回文; 如果忽略空格和标点符号, 下面这个句子也是回文,“A man, a plan, a canal: Panama” ; 数字1001也是回文。
————————————————————————————————————————————————————————————————————————————
方法一:利用栈来实现;
/*判断是否是回文字符串*/
//定义一个栈的类
function Stack(){
//存放数据的数组
this.dataStore=[];
//栈顶索引
this.top=0;
//入栈的方法
this.push=push;
//出栈的方法
this.pop=pop;
//栈顶的数据
this.peak=peak;
//清空整个栈
this.clear=clear;
//栈的数据长度
this.length=length;
}
function push(data){
this.dataStore[this.top++]=data;
}
function pop(){
return this.dataStore[--this.top];
}
function peak(){
return this.dataStore[this.top-1];
}
function clear(){
this.top=0;
}
function length(){
return this.top;
}
function isPalindrome(inputWord){
var s=new Stack();
for(var i=0;i<inputWord.length;i++)
{
s.push(inputWord[i])
}
var outputWord="";
while(s.length())
{
outputWord+=s.pop();
}
if(inputWord==outputWord)
{
return true;
}
else{
return false;
}
}
var word="eye"
console.log(isPalindrome(word));
tips:利用栈我们还可以实现数制的转换,比如10进制的数换算成2进制; 还有递归的是不是也是跟栈实现的呢?(这个是我自己的猜想)
如果我们需要消除空格和其他特殊字符串的影响的话,可以利用replace和正则,将不是数字或者字母的都替换成""
inputWord=inputWord.replace(/[^A-Za-z0-9]/g,"");
方法二:利用字符串翻转来实现
split是字符串的方法,返回的是数组;
join是数组的方法,返回的是字符串;
function isPalindrome2(inputWord){
var outputWord=inputWord.split("").reverse().join("");
if(outputWord==inputWord)
{
return true;
}
else{
return false;
}
}
var word="eye";
console.log(isPalindrome2(word));