0
点赞
收藏
分享

微信扫一扫

IOS 算法(基础篇) ----- 删除字符串中的所有相邻重复项

亿奇学 2021-09-19 阅读 55
日记本

例子

输入:"abbaca"
输出:"ca"
解释:
例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 "aaca",其中又只有 "aa" 可以执行重复项删除操作,所以最后的字符串为 "ca"。

解题思路

栈方法

比较典型的一道栈方法题目

可以通过栈的 后进先出 思路进行求解
由于最后结果返回的是字符串, 那么我们用字符串代替栈数组进行求解

例如: s = "abbaca", result = "",
循环s每一个字符判断 i 是否与result的最后一个字符相等, 相等移除最后一个字符, 不相等result添加i

第一次循环: i = a, result = "a"
第二次循环: i = b, result = "ab"
第三次循环: i = b, result = "a"
第四次循环: i = a, result = ""
第五次循环: i = c, result = "c"
第六次循环: i = a, result = "ca", 返回 result

未翻译版
    func removeDuplicates(_ S: String) -> String {
        var result = ""
        for i in S {
            if i == result.last { result.removeLast() }
            else { result += String(i) }
        }
        return result
    }
翻译版
    func removeDuplicates(_ S: String) -> String {

        // 定义result
        var result = ""

        // 循环S中每一个字符
        for i in S {
 
            //如果 i 等于 result最后一个字符
            if i == result.last {
                 
                // result移除最后一个字符
                result.removeLast()
                
            }else {

                // result拼接i
                result += String(i)
                
            }
        }
       
        // 返回结果
        return result
    }
举报

相关推荐

0 条评论