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

leetcode 541. 反转字符串 II

时间:2022-11-08 12:33:16浏览次数:45  
标签:剩余 字符 反转 II 541 字符串 leetcode 个字符 2k

题目

给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。 如果剩余字符少于 k 个,则将剩余字符全部反转。 如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。 示例 1: 输入:s = "abcdefg", k = 2 输出:"bacdfeg" 示例 2: 输入:s = "abcd", k = 2 输出:"bacd"  

代码

void  reverse(char*s,int left,int right)
{
    char tmp=0;
    while(left<=right)
    {
          char tmp=0;
          tmp=s[left];
          s[left]=s[right];
          s[right]=tmp;
          left++;
          right--;
    }
}
char * reverseStr(char * s, int k){
   int i=0;
   int len=strlen(s);
   for(i=0;i<len;i+=2*k)
   {
       if(i+k<=len)//剩下字符>=k,<2k
       {
        reverse(s,i,i+k-1);
        continue;
       }
       reverse(s,i,len-1);//剩余字符<k
   }
   return s;
}

过程分析

1.

假设 k=2 ,i=0时 image.png

2.

因为满足2*k个长度,所以将前k个字符反转,即 [0,k-1] image.png

3.

image.png

因为我们仅仅需要在结束时再判断下<k的情况,所以在满足>=k <2*k的里面加上contiune

4.

如果剩余的字符长度>=k,则将前k个反转, len-i>=k,即i+k<=len i+k=6,i+k<=len满足条件 image.png

5.

若数组为 abcde,k=2 image.png

6.

当i=4时, i+k=6 ,i+k>len,不满足条件,将剩余的字符的长度整体反转 image.png

标签:剩余,字符,反转,II,541,字符串,leetcode,个字符,2k
From: https://blog.51cto.com/u_15787387/5832559

相关文章

  • [LeetCode] 1544. Make The String Great
    Givenastring s ofloweranduppercaseEnglishletters.Agoodstringisastringwhichdoesn'thave twoadjacentcharacters s[i] and s[i+1] where:......
  • UNTX部署到IIS,亲测有效
    一、安装服务器需要的环境1.安装Node.js下载地址:http://nodejs.cn/download,根据服务器环境选择对应版本的安装包即可,本人选的是Windows64位的.msi安装包......
  • 45. 跳跃游戏 II
    给你一个非负整数数组nums,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。......
  • leetcode 35. 搜索插入位置 js 实现
    给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(logn) 的算法。......
  • [LeetCode] 1323. Maximum 69 Number
    Youaregivenapositiveinteger num consistingonlyofdigits 6 and 9.Return themaximumnumberyoucangetbychanging atmost onedigit(6 becomes......
  • leetcode 300. 最长递增子序列 js 动态规划实现
    给你一个整数数组nums,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7]是数组[0......
  • LeetCode刷题记录.Day8
    两个数组的交集链接349.两个数组的交集-力扣(LeetCode)classSolution{public:vector<int>intersection(vector<int>&nums1,vector<int>&nums2){......
  • 【Leetcode】 剑指offer:栈与队列 --Day01
    写在前面2023届秋招形势严峻,作为2024届本科生倍感压力。时间紧迫,需要加快脚步。计划之一是在未来的36天时间里通关Leetcode的剑指offer系列算法题。这一系列的学习周期为......
  • [Leetcode Weekly Contest]318
    链接:LeetCode[Leetcode]2460.对数组执行操作给你一个下标从0开始的数组nums,数组大小为n,且由非负整数组成。你需要对数组执行n-1步操作,其中第i步操作(从0......
  • leetcode-2363-easy
    MergeSimilarItemsYouaregiventwo2Dintegerarrays,items1anditems2,representingtwosetsofitems.Eacharrayitemshasthefollowingproperties:ite......