输入一个字符串和一个非负整数n,要求将字符串循环左移n次。 输入格式: 输入在第1行中给出一个不超过100个字符长度的、以回车结束的非空字符串;第2行给出非负整数n。 输出格式: 在一行中输出循环左移n次后的字符串。
时间: 2023-05-31 19:20:50 浏览: 166
输入一串字符和输出
### 回答1:
思路:将字符串分为两部分,分别是前n个字符和剩余的字符,然后将这两部分交换位置即可。
Python代码如下:
s = input().strip() # 输入字符串并去除首尾空格
n = int(input()) # 输入循环左移的次数
# 将字符串分为前n个字符和剩余的字符
s1 = s[:n]
s2 = s[n:]
# 将这两部分交换位置
s_new = s2 + s1
print(s_new) # 输出循环左移n次后的字符串
### 回答2:
题目描述:
输入一个字符串和一个非负整数n,要求将字符串循环左移n次。
输入格式:
输入在第1行中给出一个不超过100个字符长度的、以回车结束的非空字符串;第2行给出非负整数n。
输出格式:
在一行中输出循环左移n次后的字符串。
思路分析:
1.首先将字符串反转。
2.然后将字符串前n个字符分别反转。
3.最后将字符串后面的字符分别反转。
4.然后将整个字符串输出。
代码实现:
代码分成两个部分,第一个是反转函数,第二个是主函数。
反转函数:
void Reverse(char* s, int from, int to)
{
while (from < to)
{
char t = s[from];
s[from++] = s[to];
s[to--] = t;
}
}
主函数:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void Reverse(char* s, int from, int to);
int main()
{
char str[101];
int n;
gets(str);//输入字符串
scanf("%d", &n);//输入要旋转的位数
int len = strlen(str);
//反转整个字符串
Reverse(str, 0, len - 1);
//反转前n个字符
Reverse(str, 0, len - n - 1);
//反转剩下的字符
Reverse(str, len - n, len - 1);
printf("%s\n", str);
return 0;
}
### 回答3:
题目描述:
输入一个字符串和一个非负整数n,要求将字符串循环左移n次。
输入格式:
输入在第1行中给出一个不超过100个字符长度的、以回车结束的非空字符串;第2行给出非负整数n。
输出格式:
在一行中输出循环左移n次后的字符串。
解题思路:
将要左移的字符分为两部分,第一部分是取字符串前n个字符,第二部分是取字符串第n+1个字符之后的部分。然后将这两部分合并在一起即可得到字符串左移后的结果。
需要注意的是,当n大于字符串的长度,即n%str_len == 0时,结果就是原始字符串本身。
缺点是:如果字符串很长,循环切片会消耗很大的时间和空间。
代码实现:
阅读全文