题目描述

给你一个字符串 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!”

代码片

/** @lc app=leetcode.cn id=917 lang=javascript** [917] 仅仅反转字母*/// @lc code=start
/*** @param {string} s* @return {string}*/
//方法一:栈
var reverseOnlyLetters = function(s) {let stack = [];let i = 0;//只要遇到字母就把它存入栈中while(i < s.length) {let cur = s.charCodeAt(i);while((cur >= 97 && cur <= 122) || (cur >= 65 && cur <= 90)) {stack.push(s[i]);i++;cur = s.charCodeAt(i);}i++;}let res = "";i = 0;//下次遍历的时候 只要是字母 就从栈中弹出 即可一一对应while (i < s.length) {let cur = s.charCodeAt(i);while((cur >= 97 && cur <= 122) || (cur >= 65 && cur <= 90)) {res += stack.pop();i++;cur = s.charCodeAt(i);}res += s[i] || "";i++;}return res;
};
// @lc code=end/*** @param {string} s* @return {string}*/var reverseOnlyLetters = function (s) {let left = 0,right = s.length - 1;let stack = s.split("");while (left <= right) {let leftChar = s.charCodeAt(left),isLeftChar =(leftChar >= 97 && leftChar <= 122) ||(leftChar >= 65 && leftChar <= 90);let rightChart = s.charCodeAt(right),isRightChar =(rightChart >= 97 && rightChart <= 122) ||(rightChart >= 65 && rightChart <= 90);// 当左右指针指向都指向的是字母的情况下 就互相交换if (isLeftChar && isRightChar) {[stack[left], stack[right]] = [stack[right], stack[left]];left++;right--;}// 左指针指向的不是字母,向右移动1位if (!isLeftChar) left++;// 右指针指向的不是字母,向左移动1位if (!isRightChar) right--;}return stack.join("");};

JavaScript——leetcode917. 仅仅反转字母相关推荐

  1. leetcode 算法题849 (简单240) 仅仅反转字母

    leetcode 算法题849 (简单240) 仅仅反转字母 题目介绍 给定一个字符串 S, 返回 "反转后的" 字符串, 其中不是字母的字符都保留在原地, 而所有字母的位置发生反 ...

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

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

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

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

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

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

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

    仅仅反转字母

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

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

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

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

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

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

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

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

最新文章

  1. 鼠标同步桌面_[问题处理]XenCenter控制台操作通过MCS发布的虚拟机鼠标不同步
  2. 共享单车变身“行走的弹幕”,清华大学等17所高校均有投放
  3. 一个网站哪些页面需要用到redis_网页和网站有什么区别?做一个网站难不难?都需要哪些技能?...
  4. BlockingQueue原理分析(ReentrantLock、Condition的实践)
  5. 缠论108课_缠论108课学习顺序
  6. 基于opencv的数字识别
  7. 推断性统计部分(一)---样本与分布的关系及其检验统计量
  8. js数组常用方法复习
  9. APISpace 绕口令API
  10. 京东到家搜索系统架构演进
  11. java单线程刷功德程序
  12. Vue 的身份证 手机号码 电话号码 邮箱等校验
  13. Fast Global Registration(快速全局配准)
  14. PHP语法糖->,::和=>
  15. Python+Yolov5反光衣黄色马甲特征识别监测快速锁定目标人物体
  16. 道闸系统服务器功能,道闸系统_停车场自动道闸系统 - 九鼎智能
  17. 如何自己编译wireless tool
  18. 服务器设置好后怎么显示,如何查看服务器已配置环境
  19. 【Ubuntu】Ubuntu 16.04 安装后优化
  20. win7咱么锁定计算机,怎么锁定计算机?Win7锁定电脑屏幕的步骤

热门文章

  1. 15、【华为HCIE-Storage】--多路径技术
  2. windows下使用GRUB2 制作支持BIOS和UEFI的WINPE、LINUX、MAXDOS多引导U盘
  3. NLP实战一 利用OpenAI Codex实现中文转python代码
  4. 老毛桃装机版制作启动U盘图文教程
  5. 年薪30万、50万、100万的管理者,有啥分别?
  6. 壹佰利—通联信用作为吉林省首家获得人民银行颁发的企业征信备案牌照,开始为全省人民服务!
  7. 互联网查询信用报告,为什么提示“无法进行注册”?
  8. linux zip unzip指令使用方法
  9. vue执行配置选项npm run serve的本质
  10. TCP/IP相关的那些事儿