面试题

华为OD机试真题2023_Swift_100_投篮大赛

2023-03-14  本文已影响0人  雾中探雪
// 投篮大赛
    func HW2023022() {
        //测试用例
//        let inputStr = "5 2 C D +"
//        let inputStr = "5 -2 4 C D 9 + +"
//        let inputStr = "1"
//        let inputStr = "+"
        // 开始代码
        let inputStr: String = String(readLine()!)
        let inputArr = inputStr.components(separatedBy: " ")
        var resArr: [Int] = []  // 存储每项数据
        var isError = false     // 是否出现异常,初始值false
        for i in inputArr {
            if i == "+" {
                if resArr.count > 1 {
                    let sum = resArr[resArr.count - 1] + resArr[resArr.count - 2]  // 获取最后两项分数求和
                    resArr.append(Int(sum))
                }else {
                    isError = true
                    break
                }
            }else if i == "C" {
                if resArr.count > 0 {
                    resArr.removeLast() // 移除最后一项分数
                }else {
                    isError = true
                    break
                }
            }else if i == "D" {
                if resArr.count > 0 {
                    let last = resArr[resArr.count - 1] // 获取最后一项分数
                    resArr.append(Int(last)*2)
                }else {
                    isError = true
                    break
                }
            }else {
                resArr.append(Int(i)!)
            }
        }
        // 如果isError==true表示异常打印-1,否则数组求和并打印
        print(isError ? "-1" : resArr.reduce(0) { $0 + $1 })
    }
上一篇 下一篇

猜你喜欢

热点阅读