文章目录

  • 1.问题描述
  • 2.代码详情

1.问题描述

给定一个字符串 S,返回 “反转后的” 字符串,其中不是字母的字符都保留在原地,而所有字母的位置发生反转。

示例 1:
输入:“ab-cd”
输出:“dc-ba”

示例 2:
输入:“a-bC-dEf-ghIj”
输出:“j-Ih-gfE-dCba”

示例 3:
输入:“Test1ng-Leet=code-Q!”
输出:“Qedo1ct-eeLg=ntse-T!”

2.代码详情

方法 :字母栈
将 s 中的所有字母单独存入栈中,所以出栈等价于对字母反序操作。(或者,可以用数组存储字母并反序数组。)然后,遍历 s 的所有字符,如果是字母我们就选择栈顶元素输出。

复杂度分析
时间复杂度:O(N),其中 N 是 S 的长度。
空间复杂度:O(N)。

java:

class Solution {public String reverseOnlyLetters(String S) {Stack<Character> 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)

28--仅仅反转字母相关推荐

  1. 「 每日一练,快乐水题 」917. 仅仅反转字母

    ✅力扣原题: 力扣链接:917. 仅仅反转字母 ✅题目简述: 给你一个字符串 s ,根据下述规则反转字符串: 所有非英文字母保留在原有位置. 所有英文字母(小写或大写)位置反转. 返回反转后的 s . ...

  2. LeetCode:917. 仅仅反转字母

    917. 仅仅反转字母 题目: 解题思路: 源码: 踩坑点: 题目: 解题思路: 设俩个指针,一个位于字符串第一个字符,一个位于最后一个字符,当都为字符时交换:不都为字符时直接跳过. 源码: char ...

  3. Leetcode:125.验证回文串,917仅仅反转字母,387字符串的第一个唯一字符

    文章目录 125.验证回文串 题目描述 示例 思路分析 代码实现 917.仅仅反转字母 题目描述 示例 思路分析 代码实现 387.字符串的第一个唯一字符 题目描述 示例 思路分析 代码实现: 125 ...

  4. Leetcode刷题 ——— (1)仅仅反转字母

    仅仅反转字母

  5. 力扣之917. 仅仅反转字母

    文章目录 917. 仅仅反转字母 1.题目 2.参考答案 3.知识点 ①str.isalpha() 917. 仅仅反转字母 1.题目 给你一个字符串 s ,根据下述规则反转字符串: 1.所有非英文字母 ...

  6. 【LeetCode】917. 仅仅反转字母

    题目 917. 仅仅反转字母 给你一个字符串 s ,根据下述规则反转字符串: 所有非英文字母保留在原有位置. 所有英文字母(小写或大写)位置反转. 返回反转后的 s . 示例 1: 输入:s = &q ...

  7. LeetCode:917. 仅仅反转字母————简单

    题目 917. 仅仅反转字母 给你一个字符串 s ,根据下述规则反转字符串: 所有非英文字母保留在原有位置. 所有英文字母(小写或大写)位置反转. 返回反转后的 s . 示例 1: 输入:s = &q ...

  8. JavaScript——leetcode917. 仅仅反转字母

    题目描述 给你一个字符串 s ,根据下述规则反转字符串: 所有非英文字母保留在原有位置. 所有英文字母(小写或大写)位置反转. 返回反转后的 s . 示例 1: 输入:s = "ab-cd& ...

  9. C语言--仅仅反转字母

    仅仅反转字母 给定一个字符串 S,返回 "反转后的" 字符串,其中不是字母的字符都保留在原地,而所有字母的位置发生反转. 示例1: 输入:"ab-cd" 输出: ...

  10. 【必备算法】字符串(反转问题):LeetCode题 344. 反转字符串,541. 反转字符串 II,917. 仅仅反转字母

    写在前面,反转数组的思路很简单,就是借助双指针不断将首尾相应位置的字符交换.Java模板如下: public void reverseArray(char[] arr) {int i = 0, j = ...

最新文章

  1. python3 域名转ip
  2. oracle查看表和索引碎片,Oracle 表空间索引存储与碎片检查
  3. 打包镜像并同时压缩多个镜像
  4. 有关;;;的基础小节
  5. influxdb mysql对比_InfluxDB和MySQL的读写对比测试
  6. 使用JUnit5对DynamoDB应用程序进行单元测试
  7. Bootstrap 模态对话框
  8. springMVC中获取request 对象
  9. 开源 免费 java CMS - FreeCMS1.5-数据对象-info
  10. Kd-tree的学习
  11. ASCLL码表完整版
  12. 怎么修改MAC电脑名字,三步教你修改MAC电脑的名字
  13. Anaconda安装 + Anaconda与Linux原有Python“和平共处”
  14. [lampp] 不能通过互联网连接数据库 MySQL is not accessable via network
  15. 广义势能函数和带电粒子在电磁场中的运动
  16. 邮件协议rfc822文档
  17. copy与deepcopy、赋值的区别
  18. python蚂蚁森林
  19. 番外3法鲁的新女友——《地与光》
  20. leetcode解题思路分析(一百零七)909 - 915 题

热门文章

  1. 解决ipfs 出现Error: can‘t publish while offline: pass `--allow-offline` to override的问题
  2. 酒店房间和 C++ 局部变量的作用域
  3. 不怕烧钱怕翻车:雷军与马化腾现场“过招”
  4. 解决:vue.esm.js?efeb:591 [Vue warn]: Do not use built-in or reserved HTML elements as component id: me
  5. 解决:SpringBoot 错误:Caused by: org.yaml.snakeyaml.scanner.ScannerException
  6. IntelliJ IDEA添加jar包
  7. Column count doesn't match value count at row 1 原因
  8. react native (一)
  9. iOS开发UI篇—模仿ipad版QQ空间登录界面
  10. Android NDK 使用第三方静态库(转)