字符串左旋转操作是把字符串前面的若干字符移到字符串的尾部。输入一个字符串S(长度<100),并输入向左旋的位数K(k的取值:[0,len(S)]),使字符串向左旋K位。 【输入形式】 字符串S和位数K.C语言
时间: 2024-03-15 20:44:35 浏览: 54
左旋转字符串1
这道题可以使用 C 语言中的字符数组来解决。假设字符串为 `s`,左旋位数为 `k`,则左旋操作可以通过以下步骤实现:
- 将前面的 `k` 个字符复制到一个临时数组 `temp` 中。
- 将剩余的字符依次向前移动 `k` 个位置,即将 `s[k]` 移动到 `s[0]`,将 `s[k+1]` 移动到 `s[1]`,以此类推。
- 将临时数组 `temp` 中的字符依次复制到 `s` 数组的后面 `len(s)-k` 个位置。
下面是 C 语言代码实现:
```c
#include <stdio.h>
#include <string.h>
int main() {
char s[101];
int k, len;
// 读入字符串和左旋位数
scanf("%s%d", s, &k);
len = strlen(s);
if (k == 0 || k == len) {
// 特判 k=0 和 k=len(S) 的情况
printf("%s\n", s);
} else {
char temp[101];
// 复制前面的 k 个字符到临时数组中
for (int i = 0; i < k; i++) {
temp[i] = s[i];
}
// 将剩余的字符依次向前移动 k 个位置
for (int i = 0; i < len - k; i++) {
s[i] = s[i + k];
}
// 将临时数组中的字符复制到后面 len-k 个位置
for (int i = 0; i < k; i++) {
s[len - k + i] = temp[i];
}
printf("%s\n", s);
}
return 0;
}
```
例如,如果输入字符串为 `"abcdefg"`,左旋位数为 `3`,则输出结果为:
```
defgabc
```
注意,题目中的左旋位数 `k` 需要特判 `k=0` 和 `k=len(S)` 的情况。另外,在 C 语言中,字符串数组最后一个位置必须是字符 `\0`,因此字符数组的长度需要增加 1。
阅读全文