输入: "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
}
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。