【leetcode刷题】T96-仅仅反转字母
时间:2022-06-26
本文章向大家介绍【leetcode刷题】T96-仅仅反转字母,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
【题目】
给定一个字符串 S,返回 “反转后的” 字符串,其中不是字母的字符都保留在原地,而所有字母的位置发生反转。
示例 :
输入:"ab-cd"
输出:"dc-ba"
示例 :
输入:"a-bC-dEf-ghIj"
输出:"j-Ih-gfE-dCba"
示例 :
输入:"Test1ng-Leet=code-Q!"
输出:"Qedo1ct-eeLg=ntse-T!"
提示:
S.length <= 100 33 <= S[i].ASCIIcode <= 122 S 中不包含 or "
【思路】
使用两指针i和j,分别从字符串两端开始遍历,当S[i]和S[j]都是字母时,交换。
【代码】
python版本
class Solution(object):
def reverseOnlyLetters(self, S):
"""
:type S: str
:rtype: str
"""
i =
j = len(S) -
while i < j:
# 保证S[i]和S[j]都是字符
if 'a' <= S[i] <= 'z' or 'A' <= S[i] <= 'Z':
pass
else:
i +=
continue
if 'a' <= S[j] <= 'z' or 'A' <= S[j] <= 'Z':
pass
else:
j -=
continue
S = S[:i] + S[j] + S[i+:j] + S[i] + S[j+:]
i +=
j -=
return S
C++版本
class Solution {
public:
string reverseOnlyLetters(string S) {
int i = ;
int j = S.size() - ;
while(i < j){
if((S[i] < 'a' || S[i] > 'z') && (S[i] < 'A' || S[i] > 'Z')){
i++;
continue;
}
if((S[j] < 'a' || S[j] > 'z') && (S[j] < 'A' || S[j] > 'Z')){
j--;
continue;
}
char tmp = S[i];
S[i] = S[j];
S[j] = tmp;
i++;
j--;
}
return S;
}
};
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android 自定义view实现进度条加载效果实例代码
- Android电池电量监听的示例代码
- Android 解决ScrollView嵌套CridView显示问题
- Android利用zxing快速集成二维码扫描的实例教程
- Android中使用SharedPreferences完成记住账号密码的功能
- Android Intent封装的实例详解
- Android自定义Drawable实现圆角效果
- Android ApplicationInfo 应用程序信息的详解
- Android UI控件Switch的使用方法
- Android如何读写CSV文件方法示例
- Android 静默安装和卸载的方法
- Android自定义单例AlertDialog详解
- Android Build类的详解及简单实例
- Android使用CrashHandler来获取应用的crash信息的方法
- 数据魔术师小白零基础实现简单人脸识别