前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >IOS 算法

IOS 算法

原创
作者头像
花落花相惜
修改2021-11-22 09:20:09
2330
修改2021-11-22 09:20:09
举报

例子

输入: "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

未翻译版
代码语言:txt
复制
    func removeDuplicates(_ S: String) -> String {
代码语言:txt
复制
        var result = ""
代码语言:txt
复制
        for i in S {
代码语言:txt
复制
            if i == result.last { result.removeLast() }
代码语言:txt
复制
            else { result += String(i) }
代码语言:txt
复制
        }
代码语言:txt
复制
        return result
代码语言:txt
复制
    }
翻译版
代码语言:txt
复制
    func removeDuplicates(_ S: String) -> String {
代码语言:txt
复制
        // 定义result
代码语言:txt
复制
        var result = ""
代码语言:txt
复制
        // 循环S中每一个字符
代码语言:txt
复制
        for i in S {
代码语言:txt
复制
            //如果 i 等于 result最后一个字符
代码语言:txt
复制
            if i == result.last {
代码语言:txt
复制
                // result移除最后一个字符
代码语言:txt
复制
                result.removeLast()
代码语言:txt
复制
            }else {
代码语言:txt
复制
                // result拼接i
代码语言:txt
复制
                result += String(i)
代码语言:txt
复制
            }
代码语言:txt
复制
        }
代码语言:txt
复制
        // 返回结果
代码语言:txt
复制
        return result
代码语言:txt
复制
    }

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
目录
  • 例子
  • 解题思路
    • 未翻译版
      • 翻译版
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
      http://www.vxiaotou.com