leetcode1910_go_删除一个字符串中所有出现的给定子字符串

题目

给你两个字符串 s 和 part ,请你对 s 反复执行以下操作直到 所有 子字符串 part 都被删除:

找到 s 中 最左边 的子字符串 part ,并将它从 s 中删除。

请你返回从 s 中删除所有 part 子字符串以后得到的剩余字符串。

一个 子字符串 是一个字符串中连续的字符序列。

示例 1:输入:s = "daabcbaabcbc", part = "abc" 输出:"dab"

解释:以下操作按顺序执行:

- s = "daabcbaabcbc" ,删除下标从 2 开始的 "abc" ,得到 s = "dabaabcbc" 。

- s = "dabaabcbc" ,删除下标从 4 开始的 "abc" ,得到 s = "dababc" 。

- s = "dababc" ,删除下标从 3 开始的 "abc" ,得到 s = "dab" 。

此时 s 中不再含有子字符串 "abc" 。

示例 2:输入:s = "axxxxyyyyb", part = "xy" 输出:"ab"

解释:以下操作按顺序执行:

- s = "axxxxyyyyb" ,删除下标从 4 开始的 "xy" ,得到 s = "axxxyyyb" 。

- s = "axxxyyyb" ,删除下标从 3 开始的 "xy" ,得到 s = "axxyyb" 。

- s = "axxyyb" ,删除下标从 2 开始的 "xy" ,得到 s = "axyb" 。

- s = "axyb" ,删除下标从 1 开始的 "xy" ,得到 s = "ab" 。

此时 s 中不再含有子字符串 "xy" 。

提示:1 <= s.length <= 1000

1 <= part.length <= 1000

s和 part 只包小写英文字母。

解题思路分析

1、内置函数;时间复杂度O(n^2),空间复杂度O(n)

leetcode1910_go_删除一个字符串中所有出现的给定子字符串

func removeOccurrences(s string, part string) string {
   for strings.Contains(s, part) {
      s = strings.Replace(s, part, "", 1)
   }
   return s
}

2、内置函数;时间复杂度O(n^2),空间复杂度O(n)

func removeOccurrences(s string, part string) string {
   for {
      index := strings.Index(s, part)
      if index < 0 {
         return s
      }
      s = s[:index] + s[index+len(part):]
   }
   return s
}

总结

Medium题目,熟练使用内置函数即可

展开阅读全文

页面更新:2024-04-16

标签:字符串   定子   下标   复杂度   示例   序列   函数   熟练   顺序   剩余   字符   题目   思路   操作   时间   科技   空间

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top