(字典序问题) nyoj1542-最小字符串

题目描述:

给你一个由小写字母组成的字符串,最多删除其中一个字符,使其字典序最小。

字典序概念
在数学中,字典或词典顺序(也称为词汇顺序,字典顺序,字母顺序或词典顺序)是基于字母顺序排列的单词按字母顺序排列的方法。 
这种泛化主要在于定义有序完全有序集合(通常称为字母表)的元素的序列(通常称为计算机科学中的单词)的总顺序。--百度百科

 

简单地说就是英文字典上出现的次序

 

输入描述:

多组输入(输入不超过100组)
每组数据占一行,包含一个字符串,字符串长度不超过1000

输出描述:

每组输入,输出一行能够形成的最小字符串

样例输入:

复制
abc
aba

样例输出:

ab
aa

-----------------------------------------------------------------------------------------------------
审题!!!!!,是字典序问题,这个问题指的是最多删掉其中一个字符使其字典序最小,不能改变字符串内字符的排序。比如在abc中删掉一个中,ab是最理想的,ac,bc的字典序均比它大
所以,设置代表初始位置的数字的初始值为字符串的最大长度减去1(假设下标是从0开始的)
C++代码:
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
char str[1003];
int main(){
    while(~scanf("%s",str)){
        int len = strlen(str);
        int index = len-1;
        for(int i = 1; i < len; i++){
            if(str[i] - str[i-1] < 0){
                index = i - 1;
                break;
            }
        } 
        for(int i = 0; i < len; i++){
            if(i != index){
                cout<<str[i];
            }
        }
        cout<<endl;
    }
    return 0;
}

 

转载于:https://www.cnblogs.com/Weixu-Liu/p/10659704.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值