美文网首页蓝桥杯题目
[蓝桥杯]字符串编辑

[蓝桥杯]字符串编辑

作者: 二十五六岁的你 | 来源:发表于2020-01-30 19:38 被阅读0次

问题 1621: [蓝桥杯][算法训练VIP]字符串编辑

题目描述

从键盘输入一个字符串(长度< =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则应全部替换。
在编辑过程中,若出现被改的字符不存在时,则给出提示信息。

样例解释

命令为删去s,第一个在字符中出现的s在This中,即得到结果。

输入

输入共两行,第一行为原串(以’.’结束),第二行为命令(输入方式参见“问题描述” 。

输出

输出共一行,为修改后的字符串或输出指定字符不存在的提示信息。

样例输入

This is a book. 
D  s 

样例输出

Thi is a book.

方法一:

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * User: 76147
 * Date: 2020-01-28
 * Time: 20:35
 * Description:
 */
public class 字符串编辑 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        int l = str.indexOf(".");
        str = str.substring(0, l + 1);

        String ml = sc.next();
        switch (ml) {
            case "D":
                String m = sc.next();
                int j = str.indexOf(m);
                if (j < 0) {
                    System.out.println("指定字符不存在");
                } else {
                    str = str.replaceFirst(m, "");
                }
                break;
            case "I":
                String a1 = sc.next();
                String a2 = sc.next();
                int i = str.lastIndexOf(a1);
                if (i < 0) {
                    System.out.println("指定字符不存在");
                } else {
                    a2 = str.substring(0, i) + a2;
                    str = a2 + str.substring(i);
                }
                break;
            case "R":
                String a3 = sc.next();
                String a4 = sc.next();
                if (str.indexOf(a3) < 0) {
                    System.out.println("指定字符不存在");
                } else {
                    str = str.replaceAll(a3, a4);
                }
                break;
            default:
                sc.close();

        }
        System.out.println(str);

    }
}

方法二:(StringBuffer有封装好的方法)

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * User: 76147
 * Date: 2020-01-28
 * Time: 21:16
 * Description:
 */
public class 字符串编辑2 {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        while (scan.hasNext()) {
            String s1 = scan.nextLine();
            int t1 = s1.indexOf('.');
            String s = s1.substring(0, t1 + 1);//截取以.为结束的字符串
            //System.out.println(s);
            StringBuffer ss = new StringBuffer(s);//转换成StringBuffer类型,便于后面的操作
            //输入指令
            String order = scan.next();
            switch (order) {
                case "D": {
                    String del = scan.next();
                    t1 = ss.indexOf(del);
                    if (t1 == -1)
                        System.out.println("指定字符不存在");
                    else {
                        ss.deleteCharAt(t1);//删除指定索引的字符
                    }
                    break;
                }
                case "I": {
                    String a1 = scan.next();
                    String a2 = scan.next();
                    t1 = ss.lastIndexOf(a1);
                    if (t1 == -1)
                        System.out.println("指定字符不存在");
                    else {
                        ss.insert(t1, a2);//插入
                    }
                    break;
                }
                case "R": {
                    String a3 = scan.next();
                    String a4 = scan.next();
                    t1 = ss.indexOf(a3);
                    if (t1 == -1)
                        System.out.println("指定字符不存在");
                    else {
                        while (t1 != -1)
                        {
                            char c = a4.charAt(0);
                            ss.setCharAt(t1, c);
                            t1 = ss.indexOf(a3);
                        }
                    }
                    break;
                }
            }
            System.out.println(ss);
            scan.close();
        }
    }

}

以下是 StringBuffer 类支持的主要方法:

序号 方法描述
1 public StringBuffer append(String s) 将指定的字符串追加到此字符序列。
2 public StringBuffer reverse() 将此字符序列用其反转形式取代。
3 public delete(int start, int end) 移除此序列的子字符串中的字符。
4 public insert(int offset, int i) 将 int 参数的字符串表示形式插入此序列中。
5 replace(int start, int end, String str) 使用给定 String 中的字符替换此序列的子字符串中的字符。

下面的列表里的方法和 String 类的方法类似:

序号 方法描述
1 int capacity() 返回当前容量。
2 char charAt(int index) 返回此序列中指定索引处的 char 值。
3 void ensureCapacity(int minimumCapacity) 确保容量至少等于指定的最小值。
4 void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 将字符从此序列复制到目标字符数组 dst
5 int indexOf(String str) 返回第一次出现的指定子字符串在该字符串中的索引。
6 int indexOf(String str, int fromIndex) 从指定的索引处开始,返回第一次出现的指定子字符串在该字符串中的索引。
7 int lastIndexOf(String str) 返回最右边出现的指定子字符串在此字符串中的索引。
8 int lastIndexOf(String str, int fromIndex) 返回 String 对象中子字符串最后出现的位置。
9 int length() 返回长度(字符数)。
10 void setCharAt(int index, char ch) 将给定索引处的字符设置为 ch
11 void setLength(int newLength) 设置字符序列的长度。
12 CharSequence subSequence(int start, int end) 返回一个新的字符序列,该字符序列是此序列的子序列。
13 String substring(int start) 返回一个新的 String,它包含此字符序列当前所包含的字符子序列。
14 String substring(int start, int end) 返回一个新的 String,它包含此序列当前所包含的字符子序列。
15 String toString() 返回此序列中数据的字符串表示形式。

相关文章

  • [蓝桥杯]字符串编辑

    问题 1621: [蓝桥杯][算法训练VIP]字符串编辑 题目描述 从键盘输入一个字符串(长度< =40个字符),...

  • 蓝桥杯试题——FJ的字符串

    title: 蓝桥杯试题——FJ的字符串date: 2019年2月17日20:33:05tags: 蓝桥杯试题 算...

  • [蓝桥杯]FJ的字符串

    问题 1461: [蓝桥杯][基础练习VIP]FJ的字符串 题目描述 FJ在沙盘上写了这样一些字符串: A1 = ...

  • [蓝桥杯]字符串对比

    问题 1466: [蓝桥杯][基础练习VIP]字符串对比 题目描述 给定两个仅由大写字母或小写字母组成的字符串(长...

  • 蓝桥杯

    明天就是蓝桥杯省赛了,今天早点睡吧,没事就是一个小比赛,没什么的。大不了就去打打酱油吧。早早洗漱好,就上了床,可是...

  • 蓝桥杯

    一周前才开始意识到蓝桥杯又要来了,赶快找大佬聊聊怎么准备 “只要你掌握了最近十年的7道题以上省一几乎没问题 4-6...

  • 蓝桥杯真题题解收藏

    收藏一些在网上发现的,觉得写的不错的蓝桥杯真题题解内容,给学生练习备战蓝桥杯时所用。2020蓝桥杯省赛第二场C组_...

  • [蓝桥杯]完美的代价

    问题 1467: [蓝桥杯][基础练习VIP]完美的代价 题目描述 回文串,是一种特殊的字符串,它从左往右读和从右...

  • 蓝桥杯 基础训练 Python版 0

    呃,是不是这篇文章应该叫 蓝桥杯之从入门到放弃 ? 感谢蓝桥杯,让我学了Python。但是由于近期种种事情,已经打...

  • 蓝桥杯感想

    这个项目是我们团队经过了很多努力做出来的,期间经历了很多挫折。感谢有指导老师们和同学们的陪伴。我们最后还是坚持下来...

网友评论

    本文标题:[蓝桥杯]字符串编辑

    本文链接:https://www.haomeiwen.com/subject/bfcwthtx.html