难度:简单
给你一个字符串
s
,根据下述规则反转字符串:
- 所有非英文字母保留在原有位置。
- 所有英文字母(小写或大写)位置反转。
返回反转后的
s
。示例 1:
输入:s = "ab-cd" 输出:"dc-ba"示例 2:
输入:s = "a-bC-dEf-ghIj" 输出:"j-Ih-gfE-dCba"示例 3:
输入:s = "Test1ng-Leet=code-Q!" 输出:"Qedo1ct-eeLg=ntse-T!"提示
1 <= s.length <= 100
s
仅由 ASCII 值在范围[33, 122]
的字符组成s
不含'\"'
或'\\'
题解:
class Solution: def reverseOnlyLetters(self, s: str) -> str: zm = [] ## 装大小写英文字母 fh = [] ## 装符号字符 ## 定义特殊字符符号 symbols = "=~!@#$%^&*()_+-*/<>,.[]\/1234567890<*>`']?:" list_symbols = list(symbols) list_s = list(s) for i in range(len(list_s)): ## 判断字符是否是英文字母 if list_s[i].isalpha(): zm.append(list_s[i]) ## 判断字符是否是字符符号 elif list_s[i] in list_symbols: fh.append([i,list_s[i]]) ## 先翻转字母 zm.reverse() for k in fh: zm.insert(k[0],k[1]) return ''.join(zm)
leetcode:917. 仅仅反转字母
最新推荐文章于 2024-09-27 10:11:28 发布