字符串循环右移(一道面试题的代码实现)
2013-04-17 20:21
337 查看
#include <stdio.h>
void revStr(char* arr, const size_t N ){
for(int i=0;i<N/2;i++){
char tmp = arr[i];
arr[i]=arr[N-1-i];
arr[N-1-i]=tmp;
}
}
void moveStr(char* arr, const size_t N, const size_t K){
int k=K%N;
if (k<1) return;
revStr(arr, k);
revStr(&arr[k], N-k);
revStr(arr, N);
}
int main(){
char str[12]={'a','b','c','d','e','f','g','h','i','j','k','l'};
int size = 12,i=0;
while(size--)
printf("%c",str[i++]);
printf("\n");
moveStr(str,12,5);
size = 12,i=0;
while(size--)
printf("%c",str[i++]);
getchar();
}
void revStr(char* arr, const size_t N ){
for(int i=0;i<N/2;i++){
char tmp = arr[i];
arr[i]=arr[N-1-i];
arr[N-1-i]=tmp;
}
}
void moveStr(char* arr, const size_t N, const size_t K){
int k=K%N;
if (k<1) return;
revStr(arr, k);
revStr(&arr[k], N-k);
revStr(arr, N);
}
int main(){
char str[12]={'a','b','c','d','e','f','g','h','i','j','k','l'};
int size = 12,i=0;
while(size--)
printf("%c",str[i++]);
printf("\n");
moveStr(str,12,5);
size = 12,i=0;
while(size--)
printf("%c",str[i++]);
getchar();
}
相关文章推荐
- 关于一道面试题,使用C#实现字符串反转算法
- 面试题:100个小朋友围在一起,设定编号为1~100,依次按1,2,3,4,5,6,7,8,9循环报数,报到9的小朋友出圈,请写代码打印各个小朋友的出圈顺序?(Python实现)
- 剑指Offer 面试题20:表示数值的字符串 Java代码实现
- 关于一道面试题,使用C#实现字符串反转算法
- JAVA面试题之实现字符串的倒序输出
- Python代码实现Java本地化资源字符串的检查,防止出现空指针异常
- 面试题5:从尾到头打印链表的c++代码实现
- JavaScript使用递归和循环实现阶乘的实例代码
- 循环队列比较好的实现方法-赋java代码
- 一道面试题:从一个字符串中找出第一个不重复字符;算法一;
- C++实现将字符串循环左移n个位置
- 系统性能调优(5)----Java循环与字符串代码优化
- JS实现div内部的文字或图片自动循环滚动代码
- Windows循环渐进-Ping程序实现代码
- vbs:一段比较精简的代码实现取得字符串的"字节"数
- PHP mb_convert_encoding 获取字符串编码类型实现代码
- c#实现16进制和字符串之间转换的代码
- .分析以下需求,并用代码实现 1.定义List集合,存入多个字符串 2.删除集合元素字符串中包含0-9数字的字符串 只要字符串中包含0-9中的任意一个数字就需
- 去除字符串左右两边的空格(实现代码)