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

LeetCode 541. 反转字符串 II

时间:2023-05-10 15:14:40浏览次数:38  
标签:字符 反转 II 541 字符串 LeetCode 2k

题目链接:LeetCode 541. 反转字符串 II

题意:

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

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

解题思路:

从前往后遍历字符串s,下标 i 每次一定2k,然后判断是否需要有反转的区间。

完整代码如下:

func reverseStr(s string, k int) string {
    ss:=[]byte(s)
    for i:=0;i<n;i += 2*k{
         if i + k <= n {  //剩余字符大于 k 个,则反转 k 个
               for a,b:=i,i+k-1;a<b;a,b=a+1,b-1{
                    ss[a],ss[b] = ss[b],ss[a]
                }
        } else {
                // 3. 剩余字符少于 k 个,则将剩余字符全部反转。
                for a,b:=i,n-1;a<b;a,b=a+1,b-1{
                    ss[a],ss[b] = ss[b],ss[a]
                }
        }
    }
    return string(ss)
}

标签:字符,反转,II,541,字符串,LeetCode,2k
From: https://www.cnblogs.com/lxing-go/p/17388009.html

相关文章

  • LeetCode 剑指 Offer 05. 替换空格
    题目链接:LeetCode剑指Offer05.替换空格题意:输入一个字符串s,然后将s中的每个空格替换成"%20"。解题思路:直接遍历一遍字符串,如果当前字符不是空格,则加入到结果中如果是空格,则将“%20”加入到结果集完整代码如下:funcreplaceSpace(sstring)string{varres......
  • LeetCode 344. 反转字符串
    题目链接:LeetCode344.反转字符串题意:输入一个字符串,将其在原地进行反转。解题思路:对于字符串,我们定义两个指针(也可以说是索引下标),一个从字符串前面,一个从字符串后面,两个指针同时向中间移动,并交换元素。完整代码如下:funcreverseString(s[]byte){//原地反转字符......
  • leetcode bash题--统计词频
    写一个bash脚本以统计一个文本文件words.txt中每个单词出现的频率。为了简单起见,你可以假设:words.txt只包括小写字母和''。每个单词只由小写字母组成。单词间由一个或多个空格字符分隔。示例:假设words.txt内容如下:thedayissunnythethethesunnyisis你的脚......
  • 代码随想录算法训练营第七天 | 454.四数相加II 、383.赎金信 
    ......
  • LeetCode刷题记录|LeetCode热题100|136.只出现一次的数字(easy)
    题目描述:给你一个非空整数数组nums,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。时间复杂度:O(n),其中n是数组长度。只需要对数组遍历一次。空间复......
  • Visual Studio 2022 设置 IIS Express 运行在 32 位模式
    当:1、在VisualStudio2022中开发需要访问Access数据库的网站项目时,遇到错误:未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序。2、在VisualStudio2022中开发需要访问SQLite数据库的网站项目时,遇到错误:未能加载文件或程序集“System.Data.SQLite.DLL”或它的......
  • leetcode 626 換座位
    leetcode626換座位SELECT(CASEWHENMOD(id,2)!=0ANDcounts!=idTHENid+1WHENMOD(id,2)!=0ANDcounts=idTHENidELSEid-1END)ASid,studentFROMseat,(SELECTCOUNT(*)AScountsFRO......
  • leetcode 619 只出現一次的最大數字
    leetcode619只出現一次的最大數字 selectmax(num)asnumfrom(selectnumasnumfromMyNumbersgroupbynumhavingcount(num)=1)asmn selectif(count(num)=1,num,null)asnumfromMyNumbersgroupbynumorderbynumdesclimit0,......
  • leetcode 1679
    1.排序双指针先排序sort(nums.begin(),nums.end());在双指针查找while(left<right){if(nums[left]+nums[right]<k){left++;}elseif(nums[left]+nums[right]>k){right--;}else{left++;right--;count++;}}2.......
  • 2021 Summer Petrozavodsk Camp, Day 3 IQ test (XXII Open Cup, Grand Prix of IMO)
    AND先看最小值是不是所有的子集,如果不是就无解,否则把剩下的中间塞一个最小值就好了。submissionMath移项,平方差变成\(a_j=(k-a_i)(k+a_i)\),爆枚\(k-a_i\)和\(k+a_i\)就是\(O(A\lnA)\)的。submissionFancyFormulas首先我们发现操作不改变\((a+b)\bmodp\),因此如果......