实现字符串右循环移位

实现字符串右循环移位函数,例如“abcdef”循环右移2位就是“cdefab”。

#include <stdio.h>
#include <stdlib.h>
void left_move(char arr[], int k)
{
	int i = 0;
	int len = strlen(arr);
	for (i = 0; i<k; i++)
	{
		char tmp = arr[0];
		int j = 0;
		for (j = 0; j<len - 1; j++)
		{
			arr[j] = arr[j + 1];
		}
		arr[len - 1] = tmp;
	}
}
int main()
{
	char arr[] = "abcdef";
	int k = 0;
	scanf("%d", &k);
	left_move(arr, k);
	printf("%s\n", arr);
	system("pause");
	return 0;
}

//法2:三步翻转法
#include <stdio.h>

void reverse(char *left, char *right)
{
	while (left < right)
	{
		char tmp = *left;
		*left = *right;
		*right = tmp;
		left++;
		right--;
	}
}
void left_move(char arr[], int k)
{
	int len = strlen(arr);
	reverse(arr + 0, arr + k - 1);
	reverse(arr + k, arr + len - 1);
	reverse(arr + 0, arr + len - 1);
}

int main()
{
	char arr[] = "abcdef";
	int k = 0;
	scanf("%d", &k);
	left_move(arr, k);
	printf("%s\n", arr);
	system("pause");
	return 0;
}
时间: 2024-12-28 11:29:30

实现字符串右循环移位的相关文章

【C语言】字符串右循环移位

比如:"abcdefghi"循环右移2位就是:"hiabcdefg" 给定函数原型:void RightLoopMove(char *pStr,unsigned short steps) 方法一:首先将最后面一个字符赋给临时变量,再将前面字符依次往后挪动一个位置,最后把临时变量赋给第一个字符. #include <stdio.h> #include <string.h> void RightLoopMove(char *pStr, unsig

笔试面试4 字符串的循环移位算法

字符串的循环移位是指将整个字符串左移或者后移n位. 例如:ab1234左移两位就是1234ab. 这个算法的实现是利用三次反转. 仔细观察发现,左移和后移后,1234和ab的顺序是不变的. 将1234和ab看成两个整体. 左移可以通过以下变换得到. 先将ab反转,得到ba1234; 然后反转另一部分,1234,得到ba4321; 最后将整个反转,就得到了1234ab,即左移两位后的字符串. 代码实现为:(限定n的值为合法值,即n>=0&&n<strlen(str)) #incl

【程序员编程艺术】学习记录2:左旋转字符串之循环移位法

[程序员编程艺术]学习记录2:左旋转字符串之循环移位法 GCD算法:(辗转相除法/欧几里得算法) gcd是求最大公约数的算法,作为TAOCP第一个算法 gcd算法流程: 首先给定两个整数m,n(m大于等于n)如果小于则直接交换再处理 ①求余数 r=m%n ②假如r=0,算法结束,n即为所求 否则,重新令m <- n, n <-r 之后循环 <<<<<<<<<<<<<<<<<<<&l

GBK格式字符串右补空格

public class Test2 {   public static void main(String[] s) throws IOException {   List<User> list = new ArrayList<User>();    String aa = "";  try {    System.out.println(formatStr("汪333,3", 20));     } catch (Exception e)

字符窜右循环移位函数

#include<stdio.h> #include<string.h> void RightLoopMove(char *pStr, unsigned short steps) { int i = 0; int len = strlen(pStr); char a; while (steps) { a = pStr[len -1]; for (i = len - 1; i > 0; i--) { pStr[i] = pStr[i - 1]; } pStr[0] = a; s

字符串常见操作

如有字符串mystr = 'hello world loaderman and loadermancpp',以下是常见的操作 <1>find 检测 str 是否包含在 mystr中,如果是返回开始的索引值,否则返回-1 mystr.find(str, start=0, end=len(mystr)) Demo1 mystr = "hello world loaderman and loadermancpp" result= mystr.find("itcast&q

PHP--去除字符串首尾空格

trim去除一个字符串两端空格.rtrim是去除一个字符串右部空格,其中的r是right的缩写.ltrim是去除一个字符串左部空格,其中的l是left的缩写. 例子如下: echo trim(" 空格 ")."<br>"; echo rtrim(" 空格 ")."<br>"; echo ltrim(" 空格 ")."<br>";

python 3.0 字符串功能

字符传常用功能 方法描述 string.capitalize 把字符串的第一个字符大写 用法: name = 'fenggongzi'print (name.capitalize()) Fenggongzi string.center(width) 返回一个原字符串居中,并使用空格填充至长度 width 的新字符串 用法: name = 'fenggongzi'print (name.center(50,'#')) ####################fenggongzi##########

字符串:各种奇葩的内置方法

一.字符串可以像列表和索引一样进行一些序列操作,比如切片.索引. >>> str1 = '林深处' >>> str1[:2] '林深' >>> str2 = 'Happy New Year' >>> str2[3:5] 'py' 同样字符串跟元组一样是不可变的,所以只能用切片.插入.再覆盖变量名的形式来更新字符串. >>> str1 = '林深处' >>> str1 = str1[:1] + '[插