输入有多组数据。 每组输入一个字符串(不大于100)然后输入n,再输入n条指令(指令一定有效)。
根据指令对字符串操作后输出结果。
bac 2 003 112as
cab cas
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while (scanner.hasNext()){ String s = scanner.next(); int n = scanner.nextInt(); for (int i = 0; i < n; i++) { String instruction = scanner.next(); char[] array = instruction.toCharArray(); int start =array[1] - '0'; int len = array[2] - '0'; if (array[0]=='1'){ String replace = instruction.substring(3); String ss=s.substring(0,start)+replace+s.substring(start+len); s=ss; System.out.println(ss); }else { String replace = new StringBuilder(s.substring(start,start+len)).reverse().toString(); String ss=s.substring(0,start)+replace+s.substring(start+len); s=ss; System.out.println(ss); } } } } }
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); while (scan.hasNext()) { StringBuilder str = new StringBuilder(scan.nextLine()); int n = scan.nextInt(); scan.nextLine(); for (int i = 0; i < n; i++) { String order = scan.nextLine(); int type = order.charAt(0) - 48; int begin = order.charAt(1) - 48; int len = order.charAt(2) - 48; if (type == 0) { StringBuilder a = new StringBuilder(str.substring(begin,begin+len)); a.reverse(); str = new StringBuilder(str.substring(0,begin)).append(a).append(str.substring(begin+len,str.length())); } else if (type == 1) { str = str.replace(begin,begin+len,order.substring(3,order.length())); } System.out.println(str); } } } }
import java.util.Scanner; public class Main{ public void problem9(){ Scanner input = new Scanner(System.in); String strData = input.next(); int N = input.nextInt(); String order = null; int firstBit,startBit,lenBit; // 主循环 for(int i = 0 ;i < N ;i++){ order = input.next(); firstBit = Integer.valueOf(order.substring(0, 1)); startBit = Integer.valueOf(order.substring(1, 2)); lenBit = Integer.valueOf(order.substring(2, 3)); if(firstBit == 0){ String temp = strData.substring(startBit, lenBit+startBit); char[] mainChars = strData.toCharArray(); char[] subChars = temp.toCharArray(); for(int j = subChars.length-1 , index = startBit;j >= 0 ;j--,index++){ mainChars[index] = subChars[j]; } strData = String.valueOf(mainChars); System.out.println(strData); }else if(firstBit == 1) { String midStr = order.substring(3); String firstStr = strData.substring(0,startBit); String endStr = strData.substring(startBit+lenBit); strData = firstStr+midStr+endStr; System.out.println(strData); } } } public static void main(String[] args) { new Main().problem9(); } }java版本的解法
其中substring(a, b)方法求的是[a,b-1]子串