网站建设的定位,聊城手机网站建设费用,wordpress 打开网页慢,微信官方网站开发题目 - 点击直达 1. XXXXX1. 917 仅仅反转字母 简单1. 原题链接2. 题目要求3. 基础框架 2. 解题思路1. 思路分析2. 时间复杂度3. 代码实现 1. XXXXX
1. 917 仅仅反转字母 简单
给你一个字符串 s #xff0c;根据下述规则反转字符串#xff1a; 所有非英文字母保留在原有位置… 题目 - 点击直达 1. XXXXX1. 917 仅仅反转字母 简单1. 原题链接2. 题目要求3. 基础框架 2. 解题思路1. 思路分析2. 时间复杂度3. 代码实现 1. XXXXX
1. 917 仅仅反转字母 简单
给你一个字符串 s 根据下述规则反转字符串 所有非英文字母保留在原有位置。 所有英文字母小写或大写位置反转。 返回反转后的 s 。 1. 原题链接
LeetCode 917 仅仅反转字母 简单
2. 题目要求
示例 1 输入s “ab-cd” 输出“dc-ba” 示例 2 输入s “a-bC-dEf-ghIj” 输出“j-Ih-gfE-dCba” 示例 3 输入s “Test1ng-Leetcode-Q!” 输出“Qedo1ct-eeLgntse-T!” 提示 1 s.length 100 s 仅由 ASCII 值在范围 [33, 122] 的字符组成 s 不含 ‘’ 或 ‘\’ 3. 基础框架
● Cpp代码框架
class Solution {
public:string reverseOnlyLetters(string s) {}
};2. 解题思路
1. 思路分析 ( 1 ) (1) (1) 只反转字符串中的字母其他字符位置保持不变 ( 2 ) (2) (2) 利用快排思想定义两个变量 l l l指向起始位置 r r r指向最后一个字符位置; ( 3 ) (3) (3) l l l向后查找直到找到第一个字母字符的位置 r r r向前查找直到找到第一个字母字符的位置 注意 l l l和 r r r在查找过程中需要在有效范围不在有效范围时则不进行查找查找 ( 4 ) (4) (4) 当 l l l小于 r r r时交换 l l l和 r r r位置上的字母字符然后 l l l自减1 r r r自增1; ( 5 ) (5) (5) 重复 2 , 3 , 4 2,3,4 2,3,4步直到 l l l大于 r r r为止;
2. 时间复杂度 O ( N ) O(N) O(N) l l l向后走 r r r向前走直到二者相遇共走了 n n n步;
3. 代码实现
class Solution {
public:string reverseOnlyLetters(string s) {int l 0;int r s.size() - 1;while(l r){while(l s.size() !isalpha(s[l])){l;}while(r 0 !isalpha(s[r])){r--;}if(l r){swap(s[l], s[r]);l;r--;}}return s;}
};