0
点赞
收藏
分享

微信扫一扫

HUAWEI 机试题:消除相邻且相同

hwwjian 2022-01-30 阅读 71
scala

题目描述:

  • 输入一个只包含英文字母的字符串,字符串中的俩个字母如果相邻且相同,就可以消除。
  • 在字符串上反复执行消除的动作,直到无法继续消除为止,此时游戏结束。
  • 输出最终得到的字符串长度。

输入描述:

  • 原始字符串只能包含大小写英文字母,字母的大小写敏感,长度不超过100。

输出描述:

  • 输出游戏结束后字符串的长度

说明:

输入中包含非大小写英文字母是均为异常输入,直接返回0。

代码:

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)
}
举报

相关推荐

0 条评论