字符串左旋转操作

定义字符串的左旋转操作,把字符串前面的若干个字符移动到字符串的尾部。如把字符串abcdef左旋转2位得到字符串cdefab,请实现字符串左旋转函数。

要求时间复杂度O(n),空间复杂度O(1).

 

解法是将前k个字符串反转,后面的字符串同样反转,再对整个字符串进行一次翻转。

 

 

 1 void swap(string &a,int low,int high)
 2 {
 3     char temp;
 4     while(low<high)
 5     {
 6         temp = a[low];
 7         a[low] = a[high];
 8         a[high] = temp;
 9         low++;
10         high--;
11     }
12 }
13 
14 if(str.length()<=k)return 0;
15 swap(str,0,k-1);
16 swap(str,k,str.length()-1);
17 swap(str,0,str.length()-1);

 

posted @ 2013-05-10 14:49  karlthas  阅读(212)  评论(0编辑  收藏  举报