2017年小红书在线笔试编程第二题
题目描述
给定一个字符串s和整形数字k,需要将没2k个字符中前k个字符进行翻转。当剩余字符不足k个字符时,翻转全部字符;当剩余的字符数大于等于k个字符并小于2k个字符时,则翻转前k个字符,剩余字符保持原状,字符串中只包含英文小写字母,长度不超过10000
输入描述
字符串s和整型数字k
输出描述
翻转后的字符串
实例1
输入
abcdefg 2
输出
bacdfeg
代码
import java.util.Scanner;
public class ReversalDemo {
public static void main(String[] args) {
Scanner sc= new Scanner(System.in);
String s=sc.next();
int k=sc.nextInt();
int len=s.length();
int index=0;
String str="";
for(int i=0;i<len;i+=2*k){
if(index<k&&len>2*k){
str=str+reversal(s,index,k)+s.substring(k,2*k);
index=index+2*k;
}
if((len-index)<k){
str=str+reversal(s, index, len);
break;
}else if((len-index)>=k&&(len-index)<2*k){
str=str+reversal(s, index, index+k)+s.substring(index+k,len);
break;
}
}
System.out.print(str);
}
private static String reversal(String s, int index, int endindex) {
String str=s.substring(index,endindex);
char c[]=str.toCharArray();
for(int i=0;i<(c.length+1)/2;i++){
char temp=c[i];
c[i]=c[c.length-1-i];
c[c.length-1-i]=temp;
}
String s2=new String(c);
return s2;
}
}