1863 - 字符串右移
时间限制 : 3 秒
内存限制 : 128 MB
小C最近迷上了字符串,于是他有一个问题想考你,聪明的你一定知道答案。问题如下:给你一个字符串,让你对其进行向右移动K次,输出新的字符串。
题目输入
输入数据有多组,每组有一个字符串STR与一个数字K,表示对字符串STR向右移动K位。
题目输出
输出新的字符串STR1.
输入/输出样例
输入格式
abcd1234 4 sdfe123f 10
输出格式
1234abcd 3fsdfe12
C语言解答
#include <stdlib.h> #include <stdio.h> #include <string.h> int main(){ int i,k,len; char s[1000]; while(scanf("%s %d",s, &k) != EOF){ len = strlen(s); i = len - k%len; printf("%s", &s[i]); s[i] = 0; printf("%s\n",s); } return 0; }
C++解答
#include<iostream> #include<stdio.h> using namespace std; int main() { string s1,s2; int n; while(cin>>s1>>n){ int sum=n%s1.length(); for(int i=s1.length()-sum;i<s1.length();i++) { printf("%c",s1[i]); } for(int i=0;i<=s1.length()-sum-1;i++) { printf("%c",s1[i]); } printf("\n"); } }
Java解答
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); while(sc.hasNext()) { String str=sc.next(); int rightshift=sc.nextInt(); char ch[]=str.toCharArray(); int temp=rightshift%ch.length; while(temp-->0) { char c=ch[ch.length-1]; for(int i=ch.length-1;i>0;i--) { ch[i]=ch[i-1]; } ch[0]=c; } for(int i=0;i<ch.length;i++) { System.out.print(ch[i]); } System.out.println(); } } }