当前位置: 代码迷 >> 综合 >> 蓝桥杯——ALGO-66—— 算法训练 字符串编辑
  详细解决方案

蓝桥杯——ALGO-66—— 算法训练 字符串编辑

热度:53   发布时间:2023-11-29 15:01:04.0

资源限制:

时间限制: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]);}}}}
}

运行结果如下:

 

  相关解决方案