add: 只出现一次的数字等
This commit is contained in:
67
src/string/count-binary-substrings.js
Normal file
67
src/string/count-binary-substrings.js
Normal file
@ -0,0 +1,67 @@
|
||||
// LeetCode 696. 计数二进制子串 https://leetcode-cn.com/problems/count-binary-substrings/
|
||||
// LintCode 1079. 连续子串计数 https://www.lintcode.com/problem/count-binary-substrings/description
|
||||
|
||||
// 效率低
|
||||
// export default (s) => {
|
||||
// let count = 0
|
||||
// for (let n = 0, len = s.length; n < len; n++) {
|
||||
// let last = s.charAt(n)
|
||||
// let time = 0
|
||||
// let lastTime = 0
|
||||
// for (let i = n + 1; i < len; i++) {
|
||||
// if (s.charAt(i) !== last && time === lastTime) {
|
||||
// count++
|
||||
// break
|
||||
// } else if (s.charAt(i) !== last) {
|
||||
// time++
|
||||
// } else if (time === 0) {
|
||||
// lastTime++
|
||||
// } else {
|
||||
// break
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// return count
|
||||
// }
|
||||
|
||||
// 报RegExp too big
|
||||
// export default (s) => {
|
||||
// // 建立数据结构,堆栈,保存数据
|
||||
// let r = []
|
||||
// // 给定任意子输入都返回第一个符合条件的子串
|
||||
// let match = (s) => {
|
||||
// let j = s.match(/^(0+|1+)/)[0]
|
||||
// let o = (j[0] ^ 1).toString().repeat(j.length)
|
||||
// let reg = new RegExp(`^(${j}${o})`)
|
||||
// if (reg.test(s)) {
|
||||
// return RegExp.$1
|
||||
// } else {
|
||||
// return ''
|
||||
// }
|
||||
// }
|
||||
// // 通过for循环控制程序运行的流程
|
||||
// for (let i = 0, len = s.length - 1; i < len; i++) {
|
||||
// let sub = match(s.slice(i))
|
||||
// if (sub) r.push(sub)
|
||||
// }
|
||||
// return r.length
|
||||
// }
|
||||
|
||||
export default (s) => {
|
||||
// 来自 Somnus
|
||||
// pre 前一个数字连续出现的次数,cur 当前数字连续出现的次数,result 结果子串个数
|
||||
let pre = 0; let cur = 1; let result = 0
|
||||
for (let i = 0, len = s.length - 1; i < len; i++) {
|
||||
// 判断当前数字是否与后一个数字相同
|
||||
if (s[i] === s[i + 1]) { // 相同,则当前数字出现的次数cur加1
|
||||
cur++
|
||||
} else { // 不同,则当前数字事实上变成了前一个数字,当前数字的次数重置为1
|
||||
pre = cur
|
||||
cur = 1
|
||||
}
|
||||
if (pre >= cur) { // 前一个数字出现的次数 >= 后一个数字出现的次数,则一定包含满足条件的子串
|
||||
result++
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
Reference in New Issue
Block a user