字符串左旋

简介: 字符串左旋

实现一个函数,可以左旋字符串中的k个字符。


7b7fde021b069b8ed7dc507542db8c2a_ef7705b7c8364e3191070fc4d05d1448.png


代码实现如下


#include<stdio.h>
#include<string.h>
void left_revolve(char ch[], int k)
{
  int len = strlen(ch);
  k %= len;
  int i = 0;
  //4.根据k值,重复123操作
  for (i = 0; i < k; i++)
  {
  //1.创建临时变量存储首字符
  char tmp = ch[0];
  int j = 0;
  //2.字符串整体向前移动一个字符的大小
  for (j = 0; j < len - 1; j++)
  {
    ch[j] = ch[j + 1];
  }
  //3.将首字符存放到字符串末尾
  ch[len - 1] = tmp;
  }
}
int main()
{
  char ch[] = "abcdef";
  int k = 0;
  printf("请输入需要旋转字符的个数>");
  scanf("%d", &k);
  left_revolve(ch, k);
  printf("%s\n", ch);
  return 0;
}


37371f7a03c3909f2ac1ff98d6a0205d_ca9815e8ca1c4705ad9bff0a0b0fb4ab.png


既然可以将前k个字符左旋之后置于字符串末尾,那么也可以得到->
先将前k个字符倒序,再将剩余字符倒叙,最后再将前后两部分倒序

a6bfd28466a75050f2074017f387471f_b3fc4ac5034f4fbf96d21b96daad0080.png

代码实现如下


#include<stdio.h>
#include<assert.h>
#include<string.h>
void reverse(char* left, char* right)
{
  assert(left && right);
  while (left < right)
  {
  char tmp = *right;
  *right = *left;
  *left = tmp;
  left++;
  right--;
  }
}
void left_revolve(char ch[], int k)
{
  int len = strlen(ch);
  k %= len;
  //1.先逆序前k个字符
  reverse(ch, ch + k - 1);
  //2.再逆序剩余的字符
  reverse(ch + k, ch + len - 1);
  //3.最后逆序整个字符串
  reverse(ch, ch + len - 1);
}
int main()
{
  char ch[] = "abcdef";
  int k = 0;
  printf("请输入需要旋转字符的个数>");
  scanf("%d", &k);
  left_revolve(ch, k);
  printf("%s\n", ch);
  return 0;
}

dd677be9635a6e0606d95a96537dea35_825ac477432c4b2582f619940c6f91fc.png


目录
相关文章
|
6月前
|
C语言
C语言--左旋字符/右旋字符实现及其判断
C语言--左旋字符/右旋字符实现及其判断
31 0
|
6月前
|
C语言
字符旋转及逆序输出问题
写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串。 例如:给定s1 =AABCD和s2 = BCDAA,返回1 给定s1=abcd和s2=ACBD,返回0.
|
9天前
|
Python
递归魔法:判断字符串是否为回文
本文介绍了如何使用递归判断一个字符串是否是回文。回文字符串是指正读和反读都相同的字符串。文章详细讲解了递归的基本思想和Python实现,并通过多个示例验证了函数的正确性。递归方法通过将大问题分解成更小的子问题,使得判断回文变得简单高效。
|
2月前
|
存储 算法 索引
给定一个只由左括号和右括号的字符串,返回最长的有效括号子串的长度。如何解答呢?
给定一个只由左括号和右括号的字符串,返回最长的有效括号子串的长度。如何解答呢?
|
4月前
|
API
用栈翻转字符串
用栈翻转字符串
27 0
|
5月前
《剑指offer》--字符串左旋
《剑指offer》--字符串左旋
25 0
字符串左旋
字符串左旋
57 0
字符串左旋
|
C语言
字符串的左旋和判断一个字符串是否为另外一个字符串旋转之后的字符串。(C语言实现)
字符串的左旋和判断一个字符串是否为另外一个字符串旋转之后的字符串。(C语言实现)
杨氏矩阵,字符串左旋,字符串旋转结果题目解析
杨氏矩阵,字符串左旋,字符串旋转结果题目解析