算法-字符串 循环左移
2018-05-24 11:48 TaoGePureYeahMan 阅读(697) 评论(0) 编辑 收藏 举报1、字符串循环左移
例:abcdef 循右移n位 如n=2
思路:(X'Y‘)’ =YX ‘即逆序
及X={a b } Y={c d e f}
X'=b a Y'=f e d c
该算法时间复杂度O(N) 空间复杂度O(1)
void ReverseString(char* s ,int from,int to) { while(from<to) { char t=s[from] s[from++]=s[to] s[to--]=t; } } void LeftRotateString(char* s,int n,int m) { m %=n;//对n取模,循环左移7位 跟循环左移1位是一样的 ReverseString(s,0,m-1); ReverseString(s,m,n-1); ReverseString(s,0,n-1); }