zoukankan      html  css  js  c++  java
  • 917. 仅仅反转字母

     

    思路:
    双指针,就是反转字符串的思路,不过加了层非字母的判断。详见注释。
    注:遇到非字母字符移动指针后不能忽略continue,因为不确定下一个字符就是字母。
     1 class Solution(object):
     2     def reverseOnlyLetters(self, S):
     3         """
     4         :type S: str
     5         :rtype: str
     6         """
     7         # 转成list,字符串是不可变类型
     8         lists = list(S)
     9         # 双指针
    10         i, j = 0, len(lists) - 1
    11         while i < j:
    12             # 遇到非字母字符,仅移动指针
    13             if i < j and not lists[i].isalpha():
    14                 i += 1
    15                 continue
    16             if i < j and not lists[j].isalpha():
    17                 j -= 1
    18                 continue
    19             # 遇到字母,反转,再移动指针
    20             lists[i], lists[j] = lists[j], lists[i]
    21             i += 1
    22             j -= 1
    23         return "".join(lists)
    24 
    25 
    26 if __name__ == '__main__':
    27     solution = Solution()
    28     print(solution.reverseOnlyLetters("a-bC-dEf-ghIj"))
     
  • 相关阅读:
    redis quick start
    Distributed processing
    DocFetcher 本机文件搜索工具
    ZeroTier One
    windows下搭建voip服务器
    在公司上wifi
    屏幕录制软件
    openresty vs golang vs nodejs
    DISC测试
    How to implement a windbg plugin
  • 原文地址:https://www.cnblogs.com/panweiwei/p/12697910.html
Copyright © 2011-2022 走看看