一. 题目
-
题目
给定一个字符串 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)