首页 > 其他分享 >541. 反转字符串II

541. 反转字符串II

时间:2023-03-09 18:34:27浏览次数:48  
标签:index right int 反转 len II 541 字符串 left

给定一个字符串 s 和一个整数 k,从字符串开头算起, 每计数至 2k 个字符,就反转这 2k 个字符中的前 k 个字符。

如果剩余字符少于 k 个,则将剩余字符全部反转。

如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。

示例:

输入: s = "abcdefg", k = 2
输出: "bacdfeg"

 

 1 class Solution {
 2 public:
 3     string reverseStr(string s, int k) {
 4         int len = s.length();
 5         if (!len) return s;
 6         int n = len / k;
 7         int num = len / (2 * k);
 8         int last = len - len % (2 * k);
 9         vector<int> vec;
10         int index = 0;
11         vec.push_back(last);
12         //保存要处理的下标
13         for (int i = 0; i < num; i++)
14         {
15             vec.push_back(index);
16             index = index + 2 * k;
17             if (index == last)
18             {
19                 break;
20             }
21         }
22         //反转下标对应的string
23         for (const auto p : vec)
24         {
25             int left = p;
26             int right = left + k - 1;
27             if (right > len - 1) right = len - 1;
28             char cur;
29             while (left < right)
30             {
31                 cur = s[left];
32                 s[left] = s[right];
33                 s[right] = cur;
34                 left++;
35                 right--;
36             }
37         }
38         return s;
39     }
40 };

 

 

 

标签:index,right,int,反转,len,II,541,字符串,left
From: https://www.cnblogs.com/lihaoxiang/p/17199557.html

相关文章

  • #yyds干货盘点# LeetCode面试题:字符串相乘
    1.简述:给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。注意:不能使用任何内置的BigInteger库或直接将输......
  • 字符串的展开
    字符串的展开在初赛普及组的“阅读程序写结果”的问题中,我们曾给出一个字符串展开的例子:如果在输入的字符串中,含有类似于d-h或4-8的子串,我们就把它当作一种简写,输出......
  • shell 脚本判断指定字符串是否存在
    如我要对my.cnf文件进行参数新增首先判断my.cnf中,是否已经存在要添加的参数,如果没有则添加,有则跳过第一种:#!/bin/shecho"开始修改my.cnf"grep-w"group_concat_......
  • js字符串详解(一):什么是字符串,内置对象以及包装类型对象
    1.什么是:多个字符组成的只读字符数组   vs数组:下标i          length          slice() concat   不同:......
  • js字符串详解(二):字符串API
    所有字符串API都无权修改原字符串,只能返回新字符串!转换 1.大小写转换:将字符串中所有英文字母转为统一的大小写   何时:只要不区分大小写时,都要先转为一致的大......
  • 算法训练Day9| LeetCode28. 找出字符串中第一个匹配项的下标(KMP算法)
    28. 找出字符串中第一个匹配项的下标给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从0开始)。如果......
  • 获取时间字符串
    importtimeimportdatetimedefget_time_str():#定义文件名,年月日时分秒随机数#fn=time.strftime('%Y%m%d%H%M%S')#fn=fn+'_%d'%random.r......
  • Go字符串方法
    字符串常用方法都在strings包中高性能字符串拼接varbuilderstrings.Builderbuilder.WriteString("用户名")builder.WriteByte(97)str:=builder.String()fmt.......
  • IIS配置
    2021-09-13IIS无故自动关闭停止已经不是罕见的事情了,处理这个问题是让我很头痛的事情,遇到这个问题不太可能一次性解决,多数都是用排除法一个个测试排除错误,最终找到那个错......
  • 【LeetCode回溯算法#04】组合总和I与组合总和II(单层处理位置去重)
    组合总和力扣题目链接(opensnewwindow)给定一个无重复元素的数组candidates和一个目标数target,找出candidates中所有可以使数字和为target的组合。candidates......