简单易做的的网站,无锡企业网上迁移,网站专题页面用什么做,图片生成链接文章目录1.问题描述2.代码详情1.问题描述
给定一个字符串 S#xff0c;返回 “反转后的” 字符串#xff0c;其中不是字母的字符都保留在原地#xff0c;而所有字母的位置发生反转。
示例 1#xff1a; 输入#xff1a;“ab-cd” 输出#xff1a;“dc-ba”
示例 2返回 “反转后的” 字符串其中不是字母的字符都保留在原地而所有字母的位置发生反转。
示例 1 输入“ab-cd” 输出“dc-ba”
示例 2 输入“a-bC-dEf-ghIj” 输出“j-Ih-gfE-dCba”
示例 3 输入“Test1ng-Leetcode-Q!” 输出“Qedo1ct-eeLgntse-T!”
2.代码详情
方法 字母栈 将 s 中的所有字母单独存入栈中所以出栈等价于对字母反序操作。或者可以用数组存储字母并反序数组。然后遍历 s 的所有字符如果是字母我们就选择栈顶元素输出。
复杂度分析 时间复杂度O(N)其中 N 是 S 的长度。 空间复杂度O(N)。
java
class Solution {public String reverseOnlyLetters(String S) {StackCharacter letters new Stack();for (char c : S.toCharArray()){if (Character.isLetter(c)){letters.push(c);}}StringBuilder res new StringBuilder();for (char c : S.toCharArray()){if (Character.isLetter(c)){res.append(letters.pop());}else{res.append(c);}}return res.toString();}
}python
class Solution:def reverseOnlyLetters(self, S: str) - str:letters [c for c in S if c.isalpha()]res []for c in S:if c.isalpha():res.append(letters.pop())else:res.append(c)return .join(res)