遇到出入順序的問題,可以用棧
方法 1:字母棧
想法和演算法
將 s 中的所有字母單獨存入棧中,所以出棧等價於對字母反序操作。(或者,可以用陣列儲存字母並反序陣列。)
然後,遍歷 s 的所有字元,如果是字母我們就選擇棧頂元素輸出。
class solution:方法 2:反轉指標想法乙個接乙個輸出 s 的所有字元。當遇到乙個字母時,我們希望找到逆序遍歷字串的下乙個字母。def reverseonlyletters(self, s: str) -> str:
# 使用字母棧
letters = [c for c in s if c.isalpha()]
ans =
print(letters)
for c in s:
if c.isalpha():
else:
return "".join(ans)
所以我們這麼做:維護乙個指標 j 從後往前遍歷字串,當需要字母時就使用它。
class solution:def reverseonlyletters(self, s: str) -> str:
# 反轉指標
ans =
j = len(s) - 1
for i, x in enumerate(s):
if x.isalpha():
while not s[j].isalpha():
j -= 1
j -= 1
else:
return ''.join(ans)
僅僅反轉字母
簡單 class solution def reverseonlyletters self,s param s str return str s list s s alpha i for i in s if i.isalpha reversed alpha list reversed s alpha...
僅僅反轉字母
給定乙個字串 s,返回 反轉後的 字串,其中不是字母的字元都保留在原地,而所有字母的位置發生反轉。示例 1 輸入 ab cd 輸出 dc ba 示例 2 輸入 a bc def ghij 輸出 j ih gfe dcba 示例 3 輸入 test1ng leet code q 輸出 qedo1ct ...
僅僅反轉字母
題目 給定乙個字串 s,返回 反轉後的 字串,其中不是字母的字元都保留在原地,而所有字母的位置發生反轉。方法一 雙指標遍歷字串陣列,不是字母,指標移動,當兩個指標指向都為字母時,就交換兩個字母。class solution elseif character.isletter a right else...