题解 | 游游的字母翻倍
import java.util.Scanner;
import java.util.Arrays;
import java.lang.StringBuffer;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
StringBuffer sb = new StringBuffer();
while(scanner.hasNext()){
// System.out.println(scanner.nextLine());
String[] sArr = scanner.nextLine().split(" ");
int n = Integer.parseInt(sArr[0]), q = Integer.parseInt(sArr[1]);
String input_s = scanner.nextLine();
sb = new StringBuffer(input_s);
for(int i=0;i<q;i++){
String cur_s = sb.toString();
String[] lr_arr = scanner.nextLine().split(" ");
int l = Integer.parseInt(lr_arr[0]), r = Integer.parseInt(lr_arr[1]);
int p = 0;//偏移量
for(int j=l;j<r+1;j++){
// System.out.println("cur_s:"+cur_s+" "+"j:"+j+" "+"l:"+l+" "+"r:"+r);
sb.insert(j+p,cur_s.substring(j-1,j));
p++;
}
}
}
System.out.println(sb.toString());
}
}
主要考察对于字符串复杂处理的细致程度
需要搞清楚的几点:
1.处理输入的时候必须用while(scanner.hasNext()),否则获取不到后面几行
2.每次添加字母的时候需要先保存一下当时的字符串cur_s,插入时获取子串subString,否则不符合期望
3.需要用到StringBuffer,否则处理时间过长
4.用for循环做插入字母时注意有偏移量,每次插入后要让偏移量+1
#java#