网站首页 > 技术文章 正文
时间太短;当时有点懵;后来想了一下做个记录;
题目:
Bash
//求合法括号的字符串个数
// 审题:
//2.合法的类型枚举:
// 嵌套行(())( ( 4
// 父子行 ))(()())(( 6
//3.不考虑正则等方式;只能用js
就一两分钟答题时间:
刚开始的思路
Bash
// 审题:
//2.合法的类型枚举:
// 嵌套行(())
// 父子行 (()())
// ((())(
//3.不考虑正则等方式;只能用js
//4. 他们的共同点
// 且左括号个数=== 右括号个数
// 左边的第一个是( 右边的最后一个是)
// 中间的部分同样全部吻合上述3个条件
//5.从第一个(开始找满足上面的第4条;从左至右;找到满足的就;后一位继续找;如果一直找不到;你开始从第二(开始找;知道最后
function doneStr(str){
let arr = Array.isArray(str)?str:str.split('')
/**
* 找到第一个(
*/
let num = 0
let findFirst = (arr)=>{
let firstIndex = null
for(let i = 0; i<arr.length;i++){
if(arr[i] === '('){
firstIndex = i
break;
}
}
return firstIndex
}
let startIndex = findFirst(arr)
if(startIndex === null){
console.log('没有满足合法的字符串')
return num
}
/**
* 且左括号个数=== 右括号个数
* 左边的第一个是( 右边的最后一个是)
*/
let secondCheck = (arr,index)=>{
let left = 0;
let right = 0;
let demo = [];
let okDemo = []
for(let i = index;i<arr.length;i++){
demo.push(arr[i])
if(arr[i]==='(') left++;
if(arr[i]===')') right++;
if(left === right && demo[0] ==='(' && demo[demo.length-1]===')'){
//可能满足的str
okDemo.push(demo)
//重新清空条件
left = 0;
right = 0;
demo = []
}
}
return okDemo
}
let secondArr = secondCheck(arr,startIndex)
/**
* 递归处理这些可能的部分
*
*/
let thirdCheck = (arr)=>{
if(arr.length<=0) return num
/**
*一直做到这里 我都混乱 ;;
* 反向我刚开始定的审题根本不对
* 方向错了;
* 不能用正向思维
* 反向思维走起来
*/
for(let i = 0; i <arr.length;i++){
let newArr = arr[i].slice(1,-1)
if(newArr.length === 2 && arr[0] ==='(' && arr[1]=== ')'){
num = num + 2
}else{
num = num + doneStr(arr[i])
}
}
}
thirdCheck(secondArr)
return num
}
后来才知道我真的想复杂了
/**
*找()
*找一个 删一个 ; 知道最后再也找不到
*
*/
function test2(str){
let num = 0
let index = str.indexOf('()')
if(index > -1){
let newStr = str.substring(0,index) + str.substring(index+2)
num= num + 2 + test2(newStr)
}
return num
}
// test2(str)
console.log(test2(str))
到最后也不知道:所有的假设都符合上面的逻辑;有没有少
- 上一篇: 每天一道算法题——最长连续递增序列
- 下一篇: 现代 CSS 解决方案:文字颜色自动适配背景色!
猜你喜欢
- 2024-09-29 每天一道算法题——最长连续递增序列
- 2024-09-29 高级前端开发带你搞懂vue的diff算法
- 2024-09-29 前端知识杂记(diff算法自解) diff算法 react
- 2024-09-29 Web前端算法面试题 web前端面试题及答案2020
- 2024-09-29 负载均衡原理算法与4大负载方式(全面详解)
- 2024-09-29 前端工程师算法系列(4)-归并排序 归并排序javascript
- 2024-09-29 前端算法题:排列序列 前端list排序
- 2024-09-29 前端大牛带你学算法:由浅入深讲解动态规划
- 2024-09-29 前端经典算法-冒泡算法(ES6版)及优化
- 2024-09-29 每天一道算法题——打家劫舍 打家劫舍的意思解释
你 发表评论:
欢迎- 495℃几个Oracle空值处理函数 oracle处理null值的函数
- 491℃Oracle分析函数之Lag和Lead()使用
- 490℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 477℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 469℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 465℃【数据统计分析】详解Oracle分组函数之CUBE
- 448℃Oracle有哪些常见的函数? oracle中常用的函数
- 444℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 最近发表
-
- Spring Boot跨域难题终结者:3种方案,从此告别CORS噩梦!
- 京东大佬问我,SpringBoot为什么会出现跨域问题?如何解决?
- 在 Spring Boot3 中轻松解决接口跨域访问问题
- 最常见五种跨域解决方案(常见跨域及其解决方案)
- Java Web开发中优雅应对跨域问题(java跨域问题解决办法)
- Spring Boot解决跨域最全指南:从入门到放弃?不,到根治!
- Spring Boot跨域问题终极解决方案:3种方案彻底告别CORS错误
- Spring Cloud 轻松解决跨域,别再乱用了
- Github 太狠了,居然把 "master" 干掉了
- IntelliJ IDEA 调试 Java 8,实在太香了
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端react (48)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端富文本编辑器 (47)
- 前端路由 (55)
- 前端数组 (65)
- 前端定时器 (47)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle 中文 (51)
- oracle链接 (47)
- oracle的函数 (57)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)