一. 题目
-
题目
给定一个字符串 S,返回 “反转后的” 字符串,其中不是字母的字符都保留在原地,而所有字母的位置发生反转。 -
示例

二. 方法一
-
解题思路
- 将字符串转成列表
- 从两端开始遍历,
- 如果当前位置不是字母就跳过,
- 如果当前位置i是字母就交换元素
- 将转换后的列表再转成字符串
-
解题代码
def reverseOnlyLetters(self, S: str) -> str: list1 = list(S) left = 0 right = len(list1) - 1 while left < right: while not list1[left].isalpha() and left < right: left += 1 while not list1[right].isalpha() and left < right: right -= 1 temp = list1[right] list1[right] = list1[left] list1[left] = temp left += 1 right -= 1 return "".join(list1) -
分析
时间复杂度: O(n)
空间复杂度: O(n)
本文介绍了一种算法,用于反转字符串中所有字母的位置,同时保持非字母字符的原始位置不变。通过将字符串转换为列表,使用双指针技术,实现O(n)的时间复杂度和O(n)的空间复杂度。

760

被折叠的 条评论
为什么被折叠?



