1.字符串
练习题
inverseWord=(s)=>{
return s.split(\s/g).map(
word=>word.split("").reverse().join("")
).join(" ")
}
inverseWord=(s)=>{
return s.match(/[\w']+/g).map(
word=>word.split("").reverse().join("")
).join(" ")
}
/*
给定一个字符串s,
计算具有相同数量0和1的非空(连续)子字符串的数量,
并且这些子字符串的所有0和所有1都是组合在一起的
重复出现的子串要计算它们出现的次数
示例:输入:"00110011"
输出:6
解释:有6个子串具有相同数量连续1和0
"0011","01","1100","10","0011","01"
注意:一些重复出现的子串要计算它们出现的次数
另外"00110011"不是有效的子串,因为所有的0和1没有组合在一起
*/
// 思路:找抽象出来,每位至多出现一个子串,从第1到n-1位遍历
countSubStr=(str)=>{
let r =[] // 结果集
// 找子集
let match =(str)=>{
let n =str.match(/^(0+|1+)/)[0] // string
let m = (n[0]^1).toString().repeat(n.length)
let reg = new RegExp(`^(${n}${m})`)
if(reg.test(str)){
return RegExp.$1
}
return ''
}
// 遍历
for(let i=0, len=str.length-1;i<len;i++){
let sub = match(str.slice(i))
if(sub){
r.push(sub)
}
}
return r
}
2.数组
3.正则
4.排序
5.递归