题目描述
输入一个字符串,"-"分隔数值,如按k值反转(中信银行在线面试题)
输入描述:
输入为两行,第一行为参数K,第二行为字符串S。
输出描述
输出转换后的字符串
案例一
输入 2 1-2-3-4-5
输出 2-1-4-3-5
案例二
输入 3 1-2-3-4-5-6-7-8-9-10
输出 3-2-1-6-5-4-9-8-7-10
package com.tarena.test.B10;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.Scanner;
import java.util.StringJoiner;
import java.util.stream.Collectors;
/**
* @author Administrator
*
*/
public class B19_zhongxin {
public static void main(String[] args) {
try(Scanner sc = new Scanner(System.in)){
int k = Integer.parseInt(sc.nextLine());
String str = sc.nextLine();
LinkedList<Integer> list = Arrays.stream(str.split("-"))
.map(Integer::parseInt)
.collect(Collectors.toCollection(LinkedList::new));
list = resultInt(list,k);
StringJoiner sj = new StringJoiner("-");
list.stream().map(p->String.valueOf(p)).forEach(sj::add);
System.out.println(sj.toString());
} // 1-2-3-4-5-6-7-8-9-10
}
public static LinkedList<Integer> resultInt(LinkedList<Integer> list,int k){
int index = 0;
Integer temp = null;
for(int i=0,len=list.size();i<len;) {
index = i+k-1;
//要交换的下标,没有超过数组长度
if(index<len) {
temp = list.get(index);
list.set(index, list.get(i));
list.set(i, temp);
i+=k;
}else {
i++;
}
}
return list;
}
}
了解知识点
1 StringJoiner 类的使用
2 stream 流的使用规则