題目描述:
給你一個由小寫字母組成的字符串,最多刪除其中一個字符,使其字典序最小。
字典序概念
在數學中,字典或詞典順序(也稱為詞匯順序,字典順序,字母順序或詞典順序)是基於字母順序排列的單詞按字母順序排列的方法。
這種泛化主要在於定義有序完全有序集合(通常稱為字母表)的元素的序列(通常稱為計算機科學中的單詞)的總順序。--百度百科
簡單地說就是英文字典上出現的次序
輸入描述:
多組輸入(輸入不超過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; }