javascript基础练习之翻转字符串与回文

  


  

  

翻转字符串(扭转一个字符串),就是把字符串倒序处理的意思,比如给定一个字符串“hello”,翻转后应该返回“olleh”。

  

<强>测试用例
  

  
      <李> <代码> reverseString (“hello”)>   <李> <代码> reverseString(地球“问候”)>   李   
  

<>强实现思路
  

  

这里说最方便的方法就是将字符串转成数组,再颠倒数组并转成字符串返回。需要用到字符串对象和数组对象的内置方法:

  
      <李> <代码> String.split()   <李> <代码> Array.reverse()   <李> <代码> Array.join()
      李   
  

具体可以去看JavaScript参考手册

        函数reverseString (str) {   返回str.split (”) .reverse () . join ();   }      reverseString (“hello”);      

一句返回搞定,很简单有木有? !

  

在此基础上来看看回文是怎么玩的& # 11015;& # 65039;

  


  

  

"夫人,我'mAdam。“这是亚当在伊甸园里碰上夏娃说的第一句话,这句话正着读和反着读一模一样,这样的句子就是回文,英文里叫回文。

  

举个栗子——“上海自来水来自海上”,这句话顺着读和反着读都是相同的,还有很多英语单词也是:水平,夫人,雷达,LOL(哈哈哈)…

  

<强>测试用例
  

  
      <李> <代码>回文(“赛车”)>   <李> <代码>回文(不是“回文”)>   <李> <代码>回文(“0 _0/- \:0 - 0”)>   李   
  

<>强实现思路
  

  

我们需要写一个叫<代码>回文()的方法,传入一个叫str的参数,如果str是一个回文将返回真,反之为假的。

  

需要注意将标点符号和空格去掉并toUpperCase或toLowerCase后再进行判断。

  

<强>需要用到以下知识点:

  
      <李>正则表达式(正则表达式),用来过滤符号和空格李   <李> <代码> . replace() 替换与正则表达式匹配的子串李   <李> <代码> String.toLowerCase() 把字符串转换为小写李   
  

<>强关于正则表达式
  

  

这里要求匹配大小写英文字母和整数,任何标点符合和空格将被过滤掉,所以可以使用/[^ A-Za-z0-9]/g或者/[\ W_]/g

  
      <李> ^ [a - z]匹配非26个大写字母中的任意一个李   <李> ^ [a - z]匹配非26个小写字母中的任意一个李   <李>[^ 0 - 9]匹配非0到9中的任意一个数字   <李>[^ _]匹配非下划线李   <李> ^匹配字符串的开始李   <李> \ w注意是小写,匹配字母或数字或下划线或汉字   <李> \ W注意是大写,匹配任意不是字母,数字,下划线,汉字的字符,等价于[^ A-Za-z0-9_]   <李> g表示全局搜索李   
  

<强>这是我的方法:

        函数回文(str) {   str=str.replace (/[\ W_]/g,”) .toLowerCase ();   var reverseStr=str.split (”) .reverse () . join ();   返回str===reverseStr;   }      回文(“眼睛”);      

<强>我在网上看到还可以用为循环来实现:

        函数回文(str) {   var reg=/[\ W_]/g,   regStr=str.toLowerCase ()。取代(reg”),   len=regStr.length;      我(var=0, halfLen=len/2;我& lt;halfLen;我+ +){   如果(regStr[我]!==regStr (len - 1——我)){   返回错误;   }   }   返回true;   }      

这个思路很巧妙的运用了回文的特点,把整个字符串切成一半,循环遍历并依次判断首尾字符是否相等。

  

<强>还有个运用了递归的实现:

        函数回文(str) {//删除字符串中不必要的字符   var re=/[\ W_]/g;//将字符串变成小写字符   var lowRegStr=str.toLowerCase ()。替换(再保险公司”);//如果字符串lowRegStr的长度长度为0时,字符串即是回文   如果(lowRegStr。长度===0){   返回true;   }//如果字符串的第一个和最后一个字符不相同,那么字符串就不是回文   如果(lowRegStr [0] !==lowRegStr [lowRegStr。长度- 1)){   返回错误;   其他}{   返回回文(lowRegStr。片(1,lowRegStr。长度- 1));   }   }

javascript基础练习之翻转字符串与回文