12-31 7,415 views
题目:给定数组str[],循环左移m位。即如果str=”ABCDEF”,循环左移2位得到 “CDEFAB”。
算法:使用两个倒序,倒序AB得到BA,倒序CDEF得到FEDC,最后全部BAFEDC全部倒序CDEFAB。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#include <string.h> #include <iostream> using namespace std; void reverse(char *str,int left,int right) { char tmp; for(int i=left,j=right;i<j;i++,j--) { str[i]=str[j]; str[j]=tmp; } } void shift(char *str,int m, int len) { reverse(str,0,m-1); reverse(str,m,len-1); reverse(str,0,len-1); } |
版权属于: 我爱我家
原文地址: http://magicwt.com/2010/12/31/%e6%95%b0%e7%bb%84%e5%be%aa%e7%8e%af%e7%a7%bb%e4%bd%8d/
转载时必须以链接形式注明原始出处及本声明。