基础算法之字符串类

字符串翻转

给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。

示例 1:

输入: “Let’s take LeetCode contest”
输出: “s’teL ekat edoCteeL tsetnoc”

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

1
2
3
4
5
6
7
function revertWords(string) {
let array = string.split(' ')
let result = array.map(item => {
return item.split('').reverse().join('')
})
return result.join(' ')
}

计算二进制子串

给定一个字符串 s,计算具有相同数量0和1的非空(连续)子字符串的数量,并且这些子字符串中的所有0和所有1是组合在一起的。重复出现的子串要计算它们出现的次数。

示例 1 :

输入: “00110011”
输出: 6
解释: 有6个子串具有相同数量的连续1和0:“0011”,“01”,“1100”,“10”,“0011” 和 “01”。

请注意,一些重复出现的子串要计算它们出现的次数。另外,“00110011”不是有效的子串,因为所有的0(和1)没有组合在一起。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function subStringArray(string) {
let x = string.split('0').length - 1
let y = string.split('1').length - 1
let length = x > y ? y : x
var subArray = []
for (var i = 1; i <= length; i++) {
subArray.push('0'.repeat(i) + '1'.repeat(i))
subArray.push('1'.repeat(i) + '0'.repeat(i))
}
var result = []
subArray.map(item => {
let count = string.split(item).length
if (count > 1) {
for (var i = 1; i < count; i++) {
result.push(item)
}
}
})
return result;
}