(字典序問題) 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;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM