配对算法
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。
输入:s = "()" 输出:true
示例 2: 输入:s = "()[]{}" 输出:true
示例 3: 输入:s = "(]" 输出:false
示例 4: 输入:s = "([)]" 输出:false
实例5:输入:s = "{[]}" 输出:true
private fun test(param: String): Boolean {
var result = true
val split = param.toCharArray().map { it + "" }
for (i in split.indices) {
if (split[i] == "(") {
linkList.addLast(")")
} else if (split[i] == "[") {
linkList.addLast("]")
} else if (split[i] == "{") {
linkList.addLast("}")
} else {
if (linkList.size > 0) {
val remoLast = linkList.removeLast()
if (remoLast != split[i]) {
result = false
break
}
} else {
result = false
break
}
}
}
if (linkList.size != 0) {
result = false
}
return result
}
动态规划(斐波那契问题)
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例 1: 输入:n = 2 输出:2 解释:有两种方法可以爬到楼顶。 1. 1 阶 + 1 阶 2. 2 阶 示例 2: 输入:n = 3 输出:3 解释:有三种方法可以爬到楼顶。
class Solution { fun climbStairs(n: Int): Int { if (n == 1 || n == 2){ return n } var begin1 = 1 var begin2 = 2 var result = 0; for (temp in 3..n) { result = begin1 + begin2 begin1 = begin2 begin2 = result } return result }}