反转字符串,简单的算法运用到几个字符串和数组的方法就能做到,太神奇了!

250 阅读1分钟
1.给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时扔保留空格和单词的初始顺序。

示例1:

输入:"let's take leetcode contest"

输出:"s'tel ekat edocteel tsetnoc"

注意:在字符串中,每个单词有单个空格分隔,并且字符串中不会有任何空格。

方式1:
handleStrReverser(str){
      // let str = "let's take leetcode contest"
      let arr = str.split(' ')
      console.log('arr: ', arr);//arr:["let's", 'take', 'leetcode', 'contest']
      let result = arr.map(item=>{
        return item.split('').reverse().join('')
      }).join(' ')
      
      console.log('result: ', result);//result:  s'tel ekat edocteel tsetnoc
    },
方式2handleStrReverser(str){   
       //split支持正则 
      //let result = str.split(/\s/g).map(item=>{
          //match是识别的意思
      let result = str.match(/[\W']+/g).map(item=>{
        return item.split('').reverse().join('')
      }).join(' ')      
      console.log('result: ', result);//result:  s'tel ekat edocteel tsetnoc
    },
2.给定一个仅包含2-9的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意1不对任何字母

示例:

输入:"23"
输出:['ad', 'ae', 'af', 'bd', 'be', 'bf', 'cd', 'ce', 'cf']

方法:

handleStrReverser(str){
     let map = ['',1,'abc','def','ghi','jkl','mno','pqrs','tuv','wxyz']
     let num = str.split('')
     let code = []     
     num.forEach(item =>{
       if (map[item]) {
         code.push(map[item])
       }
     })
    console.log('code: ', code);
     let comb = (arr)=>{
       let tmp = []    
       for (let i = 0,il = arr[0].length ; i < il;i++) {
          for (let j = 0,jl = arr[1].length;j < jl ; j++ ) {
            tmp.push( `${arr[0][i]}${arr[1][j]}`)
          }        
       }
      arr.splice(0,2,tmp)
        if(arr.length>1){
          comb(arr)
        }else{
          return tmp
        }
      return arr[0]      
     }
     console.log('comb(code): ', comb(code));
    return comb(code)
    
    },