字符串的相关操作

1.字符串的旋转

【字符串的相关操作】将字符串‘abcdef’中头部的‘abc’移到字符串的尾部,变成‘defabc’
用蛮力法将头部的字符逐个移动到字符串末尾,需要O(m*n)次移动(m是需要移动的字符的个数,n是字符串的长度)。
比较好的解决方法是三步反转法:将需要移动和不需要移动两个部分的字符串分别反转,然后再对整体字符串进行反转,即可达到目的。
void LeftRotateString( char* s, int n, int m ) { //如果n>m,就和左移m%n是等价的 m%=n; ReverseString( s,0,m-1 ); ReverseString( s,n,n-1 ); //整体反转 ReverseString( s,0,n-1 ); }void ReverseString( char* s,int left,int right ) { while( left

    推荐阅读