// strMove1.cpp : Defines the entry point for the console application.
//
//時間複雜度O(L),空間複雜度O(1)
#include "stdafx.h"
#include <stdio.h>
#include <string.h>
#include <iostream>
void moveOneStep(char a[]);
void moveN(char a[],int n);
int main(int argc, char* argv[])
{
char a[10];
gets(a);
int n=4;
// cin>>n;
moveN(a,n);
printf("%s",a);
return 0;
}
//將字符串分成AB兩部分,前L-n個字符視爲字符串A,後n個字符視爲字符串B。移位後位BA。
//BA=B''A''=(A'B')',B'位B的反序字符串
void reverseOrder(char str[],int p,int q)
{
char temp;
while(p<q)
{
temp=str[p];
str[p]=str[q];
str[q]=temp;
p++;
q--;
}
}
//
void moveN(char a[],int n)
{
if(!a)
return;
int len=strlen(a);
int t=n%len;
reverseOrder(a,0,len-t-1);
reverseOrder(a,len-t,len-1);
reverseOrder(a,0,len-1);
}
字符串循環移位
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.