题目
思路
双指针法
所谓字符串倒序输出就是将第一个元素与最后一个元素交换,第二个元素与倒数第二个元素交换,由此使用两个指针即可指示当前需要交换的元素。
同时需要注意,非英文字母无需倒序,所以当前指针指示的元素是非英文字母的话需要将指针向前或者向后移动一位。
Python3解法
def reverseOnlyLetters(self, s: str) -> str:
s = list(s)
front_index, back_index = 0, len(s) - 1
# 若前指针指示元素不是英文字母,则前指针向后移动一位
if not s[front_index].isalpha():
front_index += 1
# 若后指针指示元素不是英文字母,则后指针向前移动一位
if not s[back_index].isalpha():
back_index -= 1
if s[front_index].isalpha() and s[back_index].isalpha():
s[front_index], s[back_index] = s[back_index], s[front_index]
front_index += 1
back_index -= 1
return "".join(s)