您的位置:首页 > 编程语言

字符串旋转问题——来自编程珠玑

2012-08-18 21:22 218 查看
字符串旋转问题——来自编程珠玑
     在编程珠玑这本书中对于字符串旋转有个很好的方法.思想是这样的:一个字符串如果要从中间某个位置进行旋转,例如对于字符串abcdefghijk,要从第四个位置(也就是d)进行旋转,得到defghijkabc。算法可以这样做:对abc求逆,得到cba,再对defghijk进行求逆得到kjihgfed,最后对cbakjihgfed整体进行求逆,就可以得到defghijkabc。
     下面通过一个简单的程序来说明:
#include <stdio.h>  

#include <stdlib.h>  

  

#define SIZE 17  

void reverse(int start, int end);  

  

int data[SIZE] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17};  

int main(void)  

{  

  int i = 5;  

  reverse(0, i - 1);  

  reverse(i, SIZE-1);  

  reverse(0, SIZE-1);  

  

  return 0;  

}  

  

void reverse(int start, int end)  

{  

  int t, i, mid;;  

  mid = (end - start) % 2 == 0 ? (end - start) / 2 : (end - start) / 2 +1;  

  

  for(i = 0; i < mid; i ++){  

    t = data[i + start];  

    data[start + i] = data[end - i];  

    data[end - i] = t;  

  }  

    

  for(i = start; i <= end; i++)  

    printf("%d ", data[i]);  

  putchar('/n');  

  return;  

}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: