算法训练(二)

39 阅读1分钟

1.单位转换

const tansterUnit = (kb) => {
  // 定义一个单位数组
  const unit = [KB, MB, GB, TB, PB]
  let index = 0
  while(kb > 1024 && index < unit.length - 1) {
    kb /= 1024
    index++
  }
  return `${kb.toFixed(2)}${unit[index]}`
}

2.### 题目:有效的括号

给定一个只包括 '('')''{''}''['']' 的字符串 s ,判断字符串是否有效。 有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。
  3. 每个右括号都有一个对应的相同类型的左括号。

示例 1

  • 输入:s = "()"
  • 输出:true

示例 2

  • 输入:s = "()[]{}"
  • 输出:true

示例 3

  • 输入:s = "(]"
  • 输出:false

const isValid = (s) => {
  // 定义一个栈
  const stack = []
  // 定义一个映射表
  const map = {
    '}': '{',
    ']': '[',
    ')': '('
  }
  for (let i = 0; i < s.length; i++) {
    const char = s[i]
   if(map[char]) {
    let top = stack.length > 0 ? stack.pop() : '#'
    if(top !== map[char]) {
      return false
    }
   } else {
    stack.push(char)
   }
  }
  return stack.length === 0
}