LeetCode算法提高之LeetCode刷题Swift in LeetCode

942. 增减字符串匹配

2019-07-24  本文已影响2人  1江春水

【题目描述】

给定只含 "I"(增大)或 "D"(减小)的字符串 S ,令 N = S.length。
返回 [0, 1, ..., N] 的任意排列 A 使得对于所有 i = 0, ..., N-1,都有:
如果 S[i] == "I",那么 A[i] < A[i+1]
如果 S[i] == "D",那么 A[i] > A[i+1]

【示例1】

输出:"IDID"
输出:[0,4,1,3,2]

【示例2】

输出:"III"
输出:[0,1,2,3]

【示例3】

输出:"DDI"
输出:[3,2,0,1]

思路:
题意意思是 给你一个只包含I和D的字符串,然后返回同时满足一下条件的数组

如果 S[i] == "I",那么 A[i] < A[i+1]
如果 S[i] == "D",那么 A[i] > A[i+1]

func diStringMatch(_ S: String) -> [Int] {
    var result = [Int]()
    var min = 0
    var max = S.count
    for cha in S {
        if cha == "I" {
            result.append(min)
            min+=1
        } else {
            result.append(max)
            max-=1
        }
    }
    result.append(min)
    return result
}
上一篇 下一篇

猜你喜欢

热点阅读