一道让我读半天题目都没有读明白的题,一开始想不明白输入的格式和题上的要求之间的关系是什么。
一开始输入的4,让我不是很明白要表达什么意思,感觉是一开始输入的字符串长度吧,但看输入样例的话,应该是5才对啊,我实在是想不到其他的含义了,先试试吧!
后面的是对应输入的操作,对应四种对字符串的操作,这里可以通过switch语句来实现,至于具体内容的实现,我想这些类应该都被封装好了。
写在后面
不得不说对于一些封装好的操作,java真的很方便,这段代码顺利AC。通过帮助文档,对于四个条件再总结一下。
同时对于这些字符的起始位置也是从0开始的,这和题上的字符从0开始是对应的。
1.String concat(String str) 将指定的字符串连接到该字符串的末尾。 通过这个方法实现第一个操作。
2.String substring(int beginIndex, int endIndex) 返回一个字符串,该字符串是该字符串的子字符串。
3.第三个是插入子串,我没有在String里面找到对应的方法,我记得StringBuilder里有这个方法,然后就想着可以把原来的字符串分成两段,然后再拼接起来这样也算插入一个子串。方法还是第二个操作的方法。
4.int indexOf(String str) 返回指定子字符串首次出现在该字符串中的索引。
package LOQ.字符串;
import java.util.Scanner;
/*
字符串操作
*/
public class P5734 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n=sc.nextInt(); //起始输入字符串的长度,我感觉没什么用处
String start = sc.next(); //起始字符串
while(sc.hasNext()) { //进行多次输入操作
int num=sc.nextInt(); //执行操作的序号
switch (num) {
case 1:
start = start.concat(sc.next());
System.out.println(start);
break;
case 2:
int a=sc.nextInt(),b=sc.nextInt();
start=start.substring(a,a+b);
System.out.println(start);
break;
case 3:
int index=sc.nextInt(); //插入的起始位置
String sub=sc.next(); //子串
start=start.substring(0,index)+sub+start.substring(index);
System.out.println(start);
break;
case 4:
System.out.println(start.indexOf(sc.next()));
break;
}
}
}
}