字符串左旋

简介: 字符串左旋

实现一个函数,可以左旋字符串中的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


目录
相关文章
|
21天前
|
C语言
C语言--左旋字符/右旋字符实现及其判断
C语言--左旋字符/右旋字符实现及其判断
20 0
|
21天前
|
C语言
字符旋转及逆序输出问题
写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串。 例如:给定s1 =AABCD和s2 = BCDAA,返回1 给定s1=abcd和s2=ACBD,返回0.
|
21天前
|
数据库 索引
数据结构中平衡二叉树插入删除中左旋、右旋、左右双旋、右左双旋的详解(题目讲解 简单易懂)
数据结构中平衡二叉树插入删除中左旋、右旋、左右双旋、右左双旋的详解(题目讲解 简单易懂)
47 0
|
21天前
L1-050 倒数第N个字符串
L1-050 倒数第N个字符串
14 0
|
21天前
|
算法 测试技术 C#
【字符串】【括号匹配】【广度优先】301. 删除无效的括号
【字符串】【括号匹配】【广度优先】301. 删除无效的括号
【字符串】【括号匹配】【广度优先】301. 删除无效的括号
|
10月前
字符串左旋
字符串左旋
31 0
字符串左旋
|
7月前
|
算法 程序员
倒置字符串
倒置字符串
|
8月前
|
C语言
字符串的左旋和判断一个字符串是否为另外一个字符串旋转之后的字符串。(C语言实现)
字符串的左旋和判断一个字符串是否为另外一个字符串旋转之后的字符串。(C语言实现)
|
11月前
杨氏矩阵,字符串左旋,字符串旋转结果题目解析
杨氏矩阵,字符串左旋,字符串旋转结果题目解析

热门文章

最新文章