每日一题——左旋转的字符串

简介: 每日一题——左旋转的字符串

左旋转的字符串

题目链接

思路

  • 做了昨天的反转字符串里的单词我们知道了,在做字符串相关的题目时,可以考虑字符串的部分反转,即先反转字符串的一部分,再反转字符串的另一部分
  • 这道题也是如此。我们就拿字符串“abcdefg”和数字2举例,我们可以将这个字符串分成两部分,即前面两个字符和后面剩下的字符,我们分别对其进行反转得到了字符串“bagfedc”,最后我们再对整个字符串反转,就得到了我们想要的结果“cdefgab”

具体步骤

void Part_reverseWords(char * s, int left, int right)
{
    while(left <= right)
    {
        char temp = s[left];
        s[left] = s[right];
        s[right] = temp;
        left++;
        right--;
    }
}
  • 对字符串前n个字符进行反转,再对余下的字符反转
  • 最后对整个字符串反转
  • 返回反转后的字符串

实现代码

void Part_reverseWords(char * s, int left, int right)
{
    while(left <= right)
    {
        char temp = s[left];
        s[left] = s[right];
        s[right] = temp;
        left++;
        right--;
    }
}
char* reverseLeftWords(char* s, int n){
    int len = strlen(s);
    Part_reverseWords(s,0,n-1);   //对字符串前n个字符进行反转
    Part_reverseWords(s,n,len-1); //对余下的字符反转
    Part_reverseWords(s,0,len-1); //对整个字符串反转
    return s;
}


相关文章
|
6月前
|
API
用栈翻转字符串
用栈翻转字符串
39 0
|
8月前
|
存储 算法
LeetCode刷题--- 61. 旋转链表(快慢指针+闭合为环)
LeetCode刷题--- 61. 旋转链表(快慢指针+闭合为环)
|
8月前
|
Java
每日一题《剑指offer》数组篇之顺时针打印矩阵
每日一题《剑指offer》数组篇之顺时针打印矩阵
62 0
每日一题《剑指offer》数组篇之顺时针打印矩阵
|
8月前
|
C语言
C语言第四十二弹---使用多种方法实现字符串左旋转
C语言第四十二弹---使用多种方法实现字符串左旋转
力扣旋转字符串
力扣旋转字符串
105 0
|
测试技术
每日一题——旋转函数
每日一题——旋转函数
112 0
每日一题——旋转函数
|
测试技术
LeetCode——396. 旋转函数
LeetCode——396. 旋转函数
91 0
LeetCode——396. 旋转函数
|
算法 测试技术
LeetCode每日一题(7)——旋转函数
旋转函数 1.题目 2.示例 3.思路 4.代码 5.复杂度分析
141 0
LeetCode每日一题(7)——旋转函数
|
存储 算法 索引
LeetCode:6390. 滑动子数组的美丽值
题目描述:给你一个长度为 n 的整数数组 nums ,请你求出每个长度为 k 的子数组的 美丽值 。 一个子数组的 美丽值 定义为:如果子数组中第 x 小整数 是 负数 ,那么美丽值为第 x 小的数,否则美丽值为 0 。 请你返回一个包含 n - k + 1 个整数的数组,依次 表示数组中从第一个下标开始,每个长度为 k 的子数组的 美丽值 。 子数组指的是数组中一段连续 非空 的元素序列。

热门文章

最新文章