整个网站建设中的关键步骤是,网站营销公司简介,英语网站案例,手机全部网站题目 - 点击直达 1. 541 反转字符串 II 简单1. 题目详情1. 原题链接2. 题目要求3. 基础框架 2. 解题思路1. 思路分析2. 时间复杂度3. 代码实现 1. 541 反转字符串 II 简单
1. 题目详情
给定一个字符串 s 和一个整数 k#xff0c;从字符串开头算起#xff0c;每计数至 2k 个… 题目 - 点击直达 1. 541 反转字符串 II 简单1. 题目详情1. 原题链接2. 题目要求3. 基础框架 2. 解题思路1. 思路分析2. 时间复杂度3. 代码实现 1. 541 反转字符串 II 简单
1. 题目详情
给定一个字符串 s 和一个整数 k从字符串开头算起每计数至 2k 个字符就反转这 2k 字符中的前 k 个字符。
如果剩余字符少于 k 个则将剩余字符全部反转。 如果剩余字符小于 2k 但大于或等于 k 个则反转前 k 个字符其余字符保持原样。
1. 原题链接
LeetCode 541 反转字符串 II 简单
2. 题目要求 示例 1 输入s “abcdefg”, k 2 输出“bacdfeg” 示例 2 输入s “abcd”, k 2 输出“bacd” 提示 1 s.length 104 s 仅由小写英文组成 1 k 104 3. 基础框架
● Cpp代码框架
class Solution {
public:string reverseStr(string s, int k) {
};2. 解题思路
1. 思路分析 ( 1 ) (1) (1) 一个变量 s t a r t start start记录需要逆置的部分的起始下标 ( 2 ) (2) (2) 计算从 s t a r t start start下标开始剩余的字符数量 n u m num num对 n u m num num进行判断 ( 3 ) (3) (3) n u m num num 大于等于 2 ∗ k 2*k 2∗k 则逆置从 s t a r t start start开始的前 k k k个字符start更新加上 2 ∗ k 2*k 2∗k ( 4 ) (4) (4) n u m num num 小于 2 ∗ k 2*k 2∗k但大于等于 k k k则逆置从 s t a r t start start开始的前 k k k个字符此时是最后一次逆置 s t a r t start start更新为整个字符串的大小 ( 5 ) (5) (5) n u m num num小于 k k k则逆置从 s t a r t start start开始的剩余字符此时是最后一次逆置 s t a r t start start更新为整个字符串的大小
2. 时间复杂度 O ( N / k ) O(N/k) O(N/k) 每次处理 2 ∗ k 2*k 2∗k个字符长度为n的字符串处理 n / ( 2 ∗ k ) 1 n/(2*k) 1 n/(2∗k)1次
3. 代码实现
class Solution {
public:string reverseStr(string s, int k) {// [0, 2k-1]// [2k, 4k-1]// [4k, 6k-1]// ...// startint start 0;while(start s.size()){if(s.size() - start 2 * k){reverse(s.begin() start, s.begin() start k);start 2 * k;}else if(s.size() - start k){reverse(s.begin() start, s.begin() start k);start s.size();}else{reverse(s.begin() start, s.end());start s.size();}}return s;}
};