前言

C++是一种计算机高级程序设计语言,由C语言扩展升级而产生 ,最早于1979年由本贾尼·斯特劳斯特卢普在AT&T贝尔工作室研发。
C++既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计。
C++拥有计算机运行的实用性特征,同时还致力于提高大规模程序的编程质量与程序设计语言的问题描述能力。

Java是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。
Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点 。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等 。

Python由荷兰数学和计算机科学研究学会的吉多·范罗苏姆 于1990 年代初设计,作为一门叫做ABC语言的替代品。Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言,随着版本的不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。
Python解释器易于扩展,可以使用C语言或C++(或者其他可以通过C调用的语言)扩展新的功能和数据类型。Python 也可用于可定制化软件中的扩展程序语言。Python丰富的标准库,提供了适用于各个主要系统平台的源码或机器码。
2021年10月,语言流行指数的编译器Tiobe将Python加冕为最受欢迎的编程语言,20年来首次将其置于Java、C和JavaScript之上。

描述

给你一个字符串 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 不含 '\"' 或 '\\'

方法一:双指针

思路与算法

我们使用 left\textit{left}left 指针从左边开始扫描字符串 sss,right\textit{right}right 指针从右边开始扫描字符串 sss。如果两个指针都扫描到字母,且 left<right\textit{left} < \textit{right}left<right,那么交换 s[left]s[\textit{left}]s[left] 和 s[right]s[\textit{right}]s[right],然后继续进行扫描;否则表明反转过程结束,返回处理后的字符串。

代码

class Solution {public String reverseOnlyLetters(String s) {int n = s.length();char[] arr = s.toCharArray();int left = 0, right = n - 1;while (true) {while (left < right && !Character.isLetter(s.charAt(left))) { // 判断左边是否扫描到字母left++;}while (right > left && !Character.isLetter(s.charAt(right))) { // 判断右边是否扫描到字母right--;}if (left >= right) {break;}swap(arr, left, right);left++;right--;}return new String(arr);}public void swap(char[] arr, int left, int right) {char temp = arr[left];arr[left] = arr[right];arr[right] = temp;}
}

917. 仅仅反转字母相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  8. 917. 仅仅反转字母 【每日一题】

    题目链接 917. 仅仅反转字母 思路 1.先得到去掉非字母的字符串,这一步用正则就可以了 2.然后反转字符串 3.遍历原来的字符串,遇到是字母就加入反转的字母,不是字母的就加入非字母字符的本身(这一 ...

  9. LeetCode 917. 仅仅反转字母

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

最新文章

  1. 你想见的大神都来AI ProCon 2019了,优惠票限时抢购开启!
  2. mybatis对mysql if函数_Mybatis使用mysql函数if出现错误
  3. 投巧解决JavaScript split方法出现空字符的问题
  4. mysql 预留一个自定义字段_MySQL 按指定字段自定义列表排序 | DevOps
  5. Vue3核心概念、新特性及与Vue2的区别
  6. java字符串数字统计_对字符串进行简单的字符数字统计 探索java中的List功能
  7. Ajax Loading进度条gif在线生成网站Preloaders.net
  8. 使用Luyten工具反编译jar包
  9. Ubuntu破解密码
  10. php laravel日志报错,Laravel 文档阅读:错误 日志记录
  11. Python每日一练——第5天:闰年问题升级版
  12. 计算机专业毕业生的就业政策,计算机专业毕业生就业情况分析及应对策略
  13. 色粉画的发展历程与西方艺术中的色粉画
  14. 学习python的编程语言
  15. 用户登录界面的测试用例
  16. 周鸿祎自称3次破解特斯拉云端系统:安全隐患巨大
  17. C++ 利用 windbg + dump + map + cod 文件分析 crash 原因
  18. JavaSE入门学习38:Java集合框架之迭代器
  19. 又有大佬加入! 「3点钟区块链」之大年初五:不眠夜共襄区块链应用落地 ! (附96小时实录)
  20. 大疆 DJI mobile SDK系列详细教程——运行实例代码(跑通大疆官方提供Mobile SDK里的sample code)

热门文章

  1. 关闭compactos_HOWTO: 利用 CompactOS 减少 Windows 10 磁盘占用量
  2. char、char*、char**数组
  3. 不愧是阿里巴巴公布Java10W字面经,在Github标星32K
  4. Camera几个重要名词概念
  5. python内置函数bin,Python内置函数bin() oct()等实现进制转换
  6. Fri Oct 7 10:08:00 UTC 0800 2016日期格式转换为 yyyy-mm-dd hh24:mi:ss (Map实现版)
  7. C++—航班查询系统
  8. 内存管理两部曲之物理内存管理
  9. 苹果pencil值得买吗?苹果平板电容笔推荐
  10. LVGL各种缓冲区分析比较(源码角度)