美文网首页
2021-03-25

2021-03-25

作者: 转移到CSDN名字丹丹的小跟班 | 来源:发表于2021-03-25 18:43 被阅读0次

js

判断由"()[]{}"6种括号组成的字符串是否合法

  1. 所有括号必须闭合
  2. 左括号必须在正确的位置闭合
function check(str) {
    let arr = []
    let obj = {
        "[": "]",
        "{": "}",
        "(": ")"
    }
    for (let key of str) {
        if (key === "[" || key === "{" || key === "(") {
            arr.push(key)
        } else {
            if (obj[arr.pop()] !== key) {
                return false
            }
        }
    }
    if (arr.length === 0) {
        return true     
    } else {
        return false
    }
    }
console.log(check("{}[{(())}]()"))

原理:
创建一个数组用于存储遇到的所有左边部分的括号,创建一个对象,将键值设置为左右对应的括号。循环遍历字符串,当遇到左边的括号时,就将它存进数组,遇到非左边的括号时,就拿出数组的最后一位左括号作为键,取出obj对象对应的右括号进行比较(因为数组最后的左括号肯定会最先遇到他的右括号),若不相等表示顺序错误,则返回false。最后进行arr的长度判断,顺序正常会全部pop掉,长度为0,不为0则是顺序出错,返回false。

孔乙己说“回”字有四种写法,编程语言中常见的命名风格有如下四种:

  • 全部首字母大写
  • 第一个单词首字母小写,其余单词首字母大写
  • 单词全部小写,由下划线连接
  • 单词全部小写,由减号连接

请设计并实现一个caseTransform函数,使得一个字符串str可以被方便地转成四种形式,并且将四种形式通过空格拼接成一个字符串返回
为方便起见,这里假设输入字符串全部符合以上四种形式的英文字母组合

function demo(str) {
    let str1,str2,str3,str4,arr
    if(str.includes('_')) {
        str1 = str.split("_").map(item => {
    return item[0].toUpperCase() + item.slice(1)
        }).join("")
    }else if(str.includes('-')) {
        str1 = str.split("-").map(item => {
    return item[0].toUpperCase() + item.slice(1)
        }).join("")
    }else if(/[A-Z]/.test(str[0])) {
        str1 = str
    }else {
        str1 = str[0].toUpperCase() + str.slice(1)
    }
    str2 = str1[0].toLowerCase() + str1.slice(1)
    str3 =  str1.replace(/[A-Z]{1}[a-z]+/g, item => {
        console.log(item)
        return item[0].toLowerCase() + item.slice(1) + "-"
    })
    str3 = str3.slice(0, str3.length - 1)
    str4 =  str1.replace(/[A-Z]{1}[a-z]+/g, item => {
        return item[0].toLowerCase() + item.slice(1) + "-"
    })
    str4 = str4.slice(0, str4.length - 1)
    console.log(str1, str2, str3, str4)
}
demo("myNameIsAtm")

相关文章

网友评论

      本文标题:2021-03-25

      本文链接:https://www.haomeiwen.com/subject/lbqrhltx.html