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
},
方式2:
handleStrReverser(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)
},