实现字符串右循环移位函数
来源:互联网 发布:大数据掌握的技术 编辑:程序博客网 时间:2024/05/18 14:45
“abcdef”循环右移3位为“defabc”
第一种方法:假设循环右移steps,
循环右移一次的情况
然后按此操作循环steps次
代码实现:
void RightLoopMove(char* pstr, unsigned short steps){ assert(pstr); int len = strlen(pstr); while (steps--) { char temp = pstr[len - 1];//先取出最后一位 int i = 0; for (i = len - 2; i >= 0; i--) { pstr[i + 1] = pstr[i];//依次往后移 } pstr[0] = temp;//把最后一位给第一位`}}
第二种方法:三步旋转逆置
pstr:“abcdef”
循环右移steps=3
“abc”逆置“cba”
“def”逆置“fed”
pstr:”cbafed”
最后整体逆置
就变成“defabc”
代码实现:
void reserve(char* left, char* right){ assert(left); assert(right); while (left < right) { *left ^= *right; *right ^= *left; *left ^= *right; left++; right--; }}void RightLoopMove(char* pstr, unsigned short steps){ assert(pstr); int len = strlen(pstr); reserve(pstr, pstr + len - steps - 1); reserve(pstr + len - steps, pstr + len - 1); reserve(pstr, pstr + len - 1);}
头文件
#include <stdio.h>#include <Windows.h>#include <assert.h>#include <string.h>
测试函数
int main(){ char arr[] = "abcdef"; printf("after:%s\n", arr); RightLoopMove(arr, 3); printf("before:%s\n", arr); system("pause"); return 0;}
运行结果
0 0
- 实现字符串右循环移位函数。
- 实现字符串右循环移位函数
- 实现字符串右循环移位函数
- 字符串右循环移位函数
- 字符串右循环移位
- 字符串右循环移位
- 字符串右循环移位
- 字符串右循环移位
- 【C语言】实现字符串右移位函数
- 【C语言】字符串右循环移位
- 【C语言】字符串右循环移位
- 字符窜右循环移位函数
- 循环右移位举例
- (1423)编写函数实现字符串循环右移n位
- 实现字符串右移循环
- 编程实现字符串的循环移位操作
- C语言实现一个循环移位函数
- 实现右旋、左旋循环移位函数
- EF框架(一)搭建过程
- Unity3d与Android交互总结
- java中length,length(),size()区别
- android Studio中preview 的显示、固定与隐藏
- 802.1P和IP Precedence及DSCP优先级的分类和对应
- 实现字符串右循环移位函数
- Swift-存储属性
- 字符串直接转NSNumber时崩溃
- 通讯录模糊匹配
- Mongodb开启与关闭
- 在Eclipse中码代码时 会爆出Unhandled event loop exception No more handles ?
- Java8之Stream/Map以及Lambda
- Python时间获取及转换知识汇总
- 《算法竞赛入门经典》(刘汝佳)5.1