回文字符串检测

回文是指正读反读都一样的字符串,如'dad'和'racecar'。本文介绍利用栈来检测回文,通过replace和正则去除空格及特殊字符,再用split和join处理字符串和数组。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


回文是指这样一种现象: 一个单词、 短语或数字, 从前往后写和从后往前写都是一样的。比如, 单词“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));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值