C++左旋字符串
来源:互联网 发布:淘宝找词工具 编辑:程序博客网 时间:2024/06/07 23:28
//左旋转字符串abcdefgh->cdefghab//循环递归法#include <iostream>#include <string.h>using namespace std;void runstring(char *str,int n){ int i = 0; int j = i+n; int len = strlen(str); char *p = str; char ch; while(j<len) { for(int m=0;m<n;m++) { if(p[j]=='\0')break; ch = p[i]; p[i]=p[j]; p[j]=ch; i++;j++; } } //此时defgh cab后面的cab需要在进行旋转. for(int k=0;k<n-len%n;k++) { //最后面需要旋转的字符串是len%n,因为不满足n位,于是我先交换len%n位, //这样就只查n-len%n位就可以转换号了,于是我将剩余的部分进行右旋转. ch=p[i]; int m; for(m=i;m<len-1;m++) { p[m]=p[m+1]; } p[m]=ch; }} int main(){ char str[]="abcdefghmk"; runstring(str,3);//总共10位,而我们需要3位的转动,则呢么做呢? cout<<str<<endl; return 0;}//<指针反转法>#include <iostream> //一旦出现移动位数不够的情况就跳出循环,开始移动.#include <string.h>iusing namespace std;void runstring(char *str,int n){ if(n<=0 || str==NULL)return; //char *fptr = str; //char *lptr = str+n; char *p = str; int len = strlen(str); int i = 0; int j = i+n;// int k; char ch; while(len-j>=n) { for(k=0;k<n;k++) { ch = p[j]; p[j] = p[i]; p[i] = ch; i++; j++; } } n = len-j; for(k=0;k<n;k++) { ch = p[len-1]; int sum = len-1; for(int m = 0;m<=j-i;m++) { p[sum] = p[sum-1]; sum--; } p[sum]=ch; }}int main(){ char str[]="abcdefghlm"; runstring(str,4); cout<<str<<endl; return 0;}//<暴力移位法>#include <iostream>#include <string.h>using namespace std;void runstring(char *str,int n){ if(str==NULL || n==0)return; if(n>0) { for(int i=0;i<n;i++) { char *p = str; char ch=p[0]; while(*p!='\0') { *p=*(p+1); p++; } *(p-1) = ch; } }else { int m = strlen(str); for(int i=0;i<-n;i++) { char *p = str+m-1; char ch = *p; int save = m-1; while(m-1>0) { *p = *(p-1); p--; m--; } *p=ch; m=save; } }}int main(){ char str[]="abcdefgh"; runstring(str,0); cout<<str<<endl; return 0;}
1 0
- 【C/C++】左旋字符串
- 【C语言】 左旋字符串
- C语言实现-字符串左旋
- 【c++】字符串循环左移
- C语言之——左旋字符串
- C语言三种方法实现字符串左旋
- c::如何左旋一个字符串中的k个字符~
- c语言左旋字符串中的k个字符
- 左旋字符串
- 左旋字符串
- 左旋字符串源码
- 左旋字符串算法
- 左旋字符串
- 左旋字符串
- (7)左旋字符串
- 左旋字符串
- 左旋字符串
- 字符串左旋
- C语言及程序设计进阶例程-12 结构体成员的引用
- C语言及程序设计进阶例程-11 体验结构体
- Project Euler:Problem 13 Large sum
- spinner requestlayout() improperly called by during layout running second layout pass
- 没做体会不深,做了才知道---写给自己,加油
- C++左旋字符串
- 练习写代码的网站
- 黑马程序员-C语言的几种定义类型的总结
- 简述指令周期、机器周期、时钟周期
- Codeforces Round #304 (Div. 2) C Soldier and Cards
- Halcon 学习总结——制作标定板(函数gen_caltab)
- 软考+设计模式总结-代理+适配器模式+中介者模式的比较
- Unity 方向控制及鼠标滚轮代码控制
- POJ2377Bad Cowtractors(最大生成树)