删除字符--蓝桥杯

文章目录

  • 题目
  • 代码
  • 总结


题目

原题链接

1.题目描述

给定一个单词,请问在单词中删除 t个字母后,能得到的字典序最小的单词是什么?

2.输入描述

输入的第一行包含一个单词,由大写英文字母组成。

第二行包含一个正整数 t。

其中,单词长度不超过 100100,t小于单词长度。

3.输出描述

输出一个单词,表示答案。

4.输入输出样例

LANQIAO
3
AIAO

代码

字典序是指从前到后比较两个字符串的大小。首先比较第一个字符,如果不同则第1个字符较小的字符串更小,如果相同则比较第2个字符……如此继续,来比较整个字符串的大小

s1:ABCDE 和 s2:ABCCE 两个字符串,s1的 D 比 s2的 C要更加大一点,所以s1 > s2。

字典序最小,只需要前面t位字母最小(删除前t位最大的),剩下的保留即可

首先将字符串转化为字符数组放入集合(放入集合是因为方便了后续的删除操作)
因为List集合的自动补位,只需要操作集合的01索引的位置即可,会转为ASCII码比较大小

import java.util.Scanner;
import java.util.ArrayList;
// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String str = scan.next();
        int len = scan.nextInt();
        //ArrayList可以自动补位
        ArrayList<Character> strList = new ArrayList<Character>();
        //  string转化为char数组
        char[] strChar = str.toCharArray();

        //遍历加入集合
        for(int i=0;i<strChar.length;i++){
          strList.add(strChar[i]);
        }

        //删除字母的操作,for循环约定删除个数
        for(int j=0;j<len;j++){
          if(strList.get(0)>strList.get(1)){
            strList.remove(0);
          }else{
            strList.remove(1);
          }
        }
        //输出
        for(int k=0;k<strList.size();k++){
          System.out.print(strList.get(k));
        }
        scan.close();
    }
}

总结

API 说明
str.toCharArray() string转char数组
strList.add( ) 将指定的元素追加到此集合的末尾
strList.remove() 删除指定索引处的元素,返回被删除的元素
strLIst.size() 返回集合中元素的个数
strList.get() 获取指定索引处的元素

你可能感兴趣的:(算法,蓝桥杯(学习),#,字符串,蓝桥杯,java,算法)