541. Reverse String II

来源:互联网 发布:七天网络手机登录入口 编辑:程序博客网 时间:2024/04/30 09:18
Given a string and an integer k, you need to reverse the first k characters for every 2k characters counting from the start of the string. If there are less than k characters left, reverse all of them. If there are less than 2k but greater than or equal to k characters, then reverse the first k characters and left the other as original.

Example:

Input: s = "abcdefg", k = 2Output: "bacdfeg"

Restrictions:
  1. The string consists of lower English letters only.
  2. Length of the given string and k will in the range [1, 10000]

直接上代码:

char* reverseStr(char* s, int k) {    int temp,length;int i,j;length=strlen(s);temp=length/(2*k);for(i=0;i<temp;i++){reverse(s,i*2*k,i*2*k+k-1);}if(length%(2*k)<k){reverse(s,temp*2*k,length-1);}else{reverse(s,temp*2*k,temp*2*k+k-1);}return s;}void reverse(char *s,int m,int n){int mid,i;char temp;mid=(m+n)/2;if(m!=n){for(i=m;i<=mid&&m<=n;i++){temp=s[m];s[m]=s[n];s[n]=temp;m++;n--;}}}


1 0
原创粉丝点击