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

     遇到出入顺序的问题,可以用栈

    方法 1:字母栈
    想法和算法

    将 s 中的所有字母单独存入栈中,所以出栈等价于对字母反序操作。(或者,可以用数组存储字母并反序数组。)

    然后,遍历 s 的所有字符,如果是字母我们就选择栈顶元素输出。

    class Solution:
        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():
                    ans.append(letters.pop())
                else:
                    ans.append(c)
            return "".join(ans)

    方法 2:反转指针
    想法

    一个接一个输出 s 的所有字符。当遇到一个字母时,我们希望找到逆序遍历字符串的下一个字母。

    所以我们这么做:维护一个指针 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
                    ans.append(S[j])
                    j -= 1
                else:
                    ans.append(x)
            return ''.join(ans)
    

      

  • 相关阅读:
    Html
    git和github简易教程
    Java基础
    如何学习一门语言
    leetcode题解(持续更新)
    浅谈安全威胁+引子
    内网渗透基础
    Java运算符
    Java修饰符
    Java变量类型
  • 原文地址:https://www.cnblogs.com/GumpYan/p/13045600.html
Copyright © 2011-2022 走看看