1863 - 字符串右移

通过次数

0

提交次数

0

时间限制 : 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();
		}
	}
}