删除字符--蓝桥杯

文章目录


题目

原题链接

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()获取指定索引处的元素
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

开心比较堵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值