1.调整字符串中的字符,使字符循环左移或者循环右移
比如一个一个字符串为“ABCDE”,其所有字符右移一位为“BCDEA”,右移三位为“DEABC”。写一个函数使其移动k个单位。
先来看看移动一个字符怎么移动:
void move_one(char arr[]){//移动一个字符时的情况
int len = strlen(arr);//字符串长度
char tmp = arr[len - 1];//提出最后一个字符
for (int i = len - 1; i >= 0; i--){
arr[i] = arr[i-1];//整体右移
}
arr[0] = tmp;//再把最后一个写到第一个
}
那怎样移动k个呢?最简单就是把上述函数调用k次,可以把它嵌套在一个k次的循环里。(目前笔者也就这个水平)
2.调整数组使奇数全部都位于偶数前面。
void sort(int arr[],int len){//把数组长度也带进来
int i = 1;
int j = len;
int tmp;
do{
i--;
if (arr[i] % 2 == 0){//检查第一个是不是偶数
tmp = arr[i];
arr[i] = arr[j-1];//是则把它与最后一个数互换
arr[j-1] = tmp;
i++;
j--;//已经确定最后一个为偶数,下一轮跳过
continue;//互换以后在判断第一个是不是偶数
}
else{
i += 2;//如果不是偶数则判断第二个
}
} while (i < j);
}