提交 4256c75a 编写于 作者: 梦境迷离's avatar 梦境迷离

Merge branch 'master' of github.com:jxnu-liguobin/cs-summary-reflection

/* Licensed under Apache-2.0 (C) All Contributors */
package io.github.sweeneycai
/**
* 130. 被围绕的区域 (Medium)
*
* 给定一个二维的矩阵,包含 'X' 和 'O'(字母 O)。
*
* 找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充。
*/
object Leetcode_130 extends App {
/**
* 典型的深度优先搜索题目。可以从矩阵四周查找所有有关联的 'O' ,然后
* 再修改矩阵内部所有孤立的 'O' 。
*/
def solve(board: Array[Array[Char]]): Unit = {
if (board.isEmpty) return
val L = board.length
val W = board(0).length
var set: Set[(Int, Int)] = Set.empty
def recur(i: Int, j: Int): Unit = {
if (i < 0 || i >= L || j < 0 || j >= W || set.contains((i, j)) || board(i)(j) != 'O')
return
set = set + (i -> j)
recur(i - 1, j)
recur(i + 1, j)
recur(i, j - 1)
recur(i, j + 1)
}
for (i <- 0 until L) {
if (board(i)(0) == 'O') recur(i, 0)
if (board(i)(W - 1) == 'O') recur(i, W - 1)
}
for (j <- 0 until W) {
if (board(0)(j) == 'O') recur(0, j)
if (board(L - 1)(j) == 'O') recur(L - 1, j)
}
for (i <- 0 until L; j <- 0 until W) {
if (board(i)(j) == 'O' && !set.contains((i, j)))
board(i)(j) = 'X'
}
}
val array = Array(
Array('X', 'X', 'X', 'X'),
Array('X', 'O', 'O', 'X'),
Array('X', 'X', 'O', 'X'),
Array('X', 'O', 'X', 'X')
)
solve(array)
println(array.map(_.mkString("Array(", ", ", ")")).mkString("Array(\n", "\n", "\n)"))
}
/* Licensed under Apache-2.0 (C) All Contributors */
package io.github.sweeneycai
/**
* 696. 计数二进制子串 (Easy)
* 给定一个字符串s,计算具有相同数量0和1的非空(连续)子字符串的数量,
* 并且这些子字符串中的所有0和所有1都是组合在一起的。
*
* 重复出现的子串要计算它们出现的次数。
*/
object Leetcode_696 extends App {
def countBinarySubstrings(s: String): Int = {
if (s.length == 0) {
return 1
}
// 使用`foldLeft`对输入的字符串进行分割,将0和1区分开。
val splitUsingFold = s.foldLeft(Array[String]()) { (string, char) =>
if (string.isEmpty) string :+ char.toString
else {
if (string(string.length - 1).charAt(0) == char) {
string(string.length - 1) += char
string
} else {
string :+ char.toString
}
}
}
var res = 0
for (i <- splitUsingFold.indices.drop(1)) {
res +=
math.min(splitUsingFold(i).length, splitUsingFold(i - 1).length)
}
res
}
println(countBinarySubstrings("1010100111100111"))
}
......@@ -10,8 +10,9 @@
- [365.水壶问题](./Leetcode_365.scala)
- [93. 复原IP地址](./Leetcode_93.scala)
- [130. 被围绕的区域](./Leetcode_130.scala)
### 其他
- [415.字符串相加](./Leetcode_415.scala)
- [696. 计数二进制子串](./Leetcode_696.scala)
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册