字符串循環移位

// 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);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章