时间复杂度为O(n)的就地循环移位 (2010年全国计算机统考考研试题)

来源:互联网 发布:centos sftp 编辑:程序博客网 时间:2024/05/08 12:53
#include<iostream>using namespace std;void reverseString(char str[], int left, int right){int i = left;int j = right;char tmp;while(i < j){tmp = str[i];str[i] = str[j];str[j] = tmp;// 用while时一定要注意循环体中的自增或自减i++;j--;}}// 向左循环移动distance位void leftLoopShift(char str[], int distance){int length = strlen(str);reverseString(str, 0, length - 1);reverseString(str, 0, length - distance - 1);reverseString(str, length - distance, length - 1);}int main(){char str[] = "1234567";int distance = 2;leftLoopShift(str, distance);cout << str << endl;return 0;}

原创粉丝点击