js
判断由"()[]{}"6种括号组成的字符串是否合法
- 所有括号必须闭合
- 左括号必须在正确的位置闭合
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")
网友评论