资源限制:
时间限制:1.0s 内存限制:512.0MB
问题描述:
从键盘输入一个字符串(长度<=40个字符),并以字符 ’.’ 结束。编辑功能有:
1 D:删除一个字符,命令的方式为: D a 其中a为被删除的字符,例如:D s 表示删除字符 ’s’ ,若字符串中有多个 ‘s’,则删除第一次出现的。
2 I:插入一个字符,命令的格式为:I a1 a2 其中a1表示插入到指定字符前面,a2表示将要插入的字符。例如:I s d 表示在指定字符 ’s’ 的前面插入字符 ‘d’ ,若原串中有多个 ‘s’ ,则插入在最后一个字符的前面。
3 R:替换一个字符,命令格式为:R a1 a2 其中a1为被替换的字符,a2为替换的字符,若在原串中有多个a1则应全部替换。
在编辑过程中,若出现被改的字符不存在时,则给出提示信息。
输入格式:
输入共两行,第一行为原串(以’.’结束),第二行为命令(输入方式参见“问题描述” 。
输出格式:
输出共一行,为修改后的字符串或输出指定字符不存在的提示信息。
样例输入:
This is a book.
D s
样例输出:
Thi is a book.
输入输出样例解释:
命令为删去s,第一个在字符中出现的s在This中,即得到结果。
代码如下:
import java.util.*;public class Main
{public static void main(String args[]){Scanner sc=new Scanner(System.in);String s=sc.nextLine();//将字符串转换为字符数组char[] arr=s.toCharArray();String s2=sc.nextLine();//将操作字符转换为字符数组char[] brr=s2.toCharArray();if (brr[0]=='D') {int i=0;//寻找对应的需要替换的字符while (arr[i]!=brr[2]) {i++;//如果到arr的最后一位都没有找到对应的字符,直接跳出循环if (i==arr.length) break;}if (i==arr.length) {System.out.println("never change");}//如果找到了对应的字符,那么对应的字符后面开始整体向前移动一位else {for (int j = i+1; j < arr.length; j++) {arr[j-1]=arr[j];}//输出改变后的字符for (int j = 0; j < arr.length-1; j++) {System.out.print(arr[j]);}}}//第二种情况 判断操作字符数组的第一个元素为'I',将执行插入操作if (brr[0]=='I') {//定义一个新的字符串,插入后字符串长度加1char [] addarr=new char[arr.length+1];//定义一个变量来判断是否找到对应的字符,并且标记最后一个出现在字符中的对应字符int n=0;//寻找对应字符for (int i = 0; i < arr.length; i++) {if (arr[i]==brr[2]) {n=i;}}if(n==0){//找不到则跳出循环System.out.println("never change");}else {//如果字符中出现过至少一次对应字符,则开始插入for (int i = 0; i < n; i++) {addarr[i]=arr[i];}addarr[n]=brr[4];//插入要插入的字符for (int i = n+1; i < addarr.length; i++) {addarr[i]=arr[i-1];//整体后移一位}for (int i = 0; i < addarr.length; i++) {System.out.print(addarr[i]);//输出新的字符串}}}
// 第三种情况 判断操作字符数组的第一个元素为'R',将执行替换操作if (brr[0]=='R') {//定义一个变量n,判断是否能找到对应字符int n=0;for (int i = 0; i < arr.length; i++) {//找到对应字符,并对其全部替换if (arr[i]==brr[2]) {arr[i]=brr[4];n++;}}//为找到对应字符,则输出"never change"if (n==0) {System.out.print("never change");}else {for (int i = 0; i < brr.length; i++) {//输出更换后的字符串System.out.print(arr[i]);}}}}
}
运行结果如下: