🌈 Scala 实现
题目描述:
- 输入一个只包含英文字母的字符串,字符串中的俩个字母如果相邻且相同,就可以消除。
- 在字符串上反复执行消除的动作,直到无法继续消除为止,此时游戏结束。
- 输出最终得到的字符串长度。
输入描述:
- 原始字符串只能包含大小写英文字母,字母的大小写敏感,长度不超过100。
输出描述:
- 输出游戏结束后字符串的长度
说明:
输入中包含非大小写英文字母是均为异常输入,直接返回0。
示例:
输入:
- mMbccbc
输出:
- 3
代码:
def main(args: Array[String]): Unit = {
// 获取输入
val input = StdIn.readLine().toList
// 异常情况
for (elem <- input) {
if (elem < 'A' | elem > 'z' | (elem > 'Z' & elem < 'a')) {
println(0)
return
}
}
var line = new ListBuffer[Char]
input.foreach(line += _)
// 标记
var length = 0
while (line.length != length) {
length = line.length
// 将两两重复的部分删除
Breaks.breakable {
for (i <- 0 to line.length - 3) {
if (line(i) == line(i + 1)) {
line.remove(i)
line.remove(i)
Breaks.break()
}
}
}
}
// 输出最终结果
println(line.length)
}