時間限制:c/c++ 1秒,其他語言2秒
空間限制:c/c++ 524288k,其他語言1048576k
題目描述 :思路:比賽的時候一直在想,對於乙個重複出現的,找到後面第乙個比他小的,如果中間有比他大的,就把他刪掉,然後保留最後乙個。如果它後面有唯一乙個出現並且比他大的,就保留它。csl 以前不會字串演算法,經過一年的訓練,他還是不會……於是他打算向你求助。
給定乙個字串,只含有可列印字元,通過刪除若干字元得到新字串,新字串必須滿足兩個條件: 原字串**現的字元,新字串也必須包含。
新字串中所有的字元均不相同。 新字串的字典序是滿足上面兩個條件的最小的字串。
輸入描述 :
僅一行,有乙個只含有可列印字元的字串 s。
|s|<1e5
輸出描述 :
在一行輸出字典序最小的新字串。
示例1輸入
bab輸出
ab示例2
輸入baca
輸出bac
備註: ascii字符集包含 94 個可列印字元(0x21 - 0x7e),不包含空格。
保留最後乙個不對鴨,應該是保留後面比他大並且唯一的那個,或者是他已經是最後乙個了。
比如說 tzetfze,對於第乙個t,把他後面的z刪掉了,它本身也要刪掉。
正確的思路:
還是往前找容易,對於乙個字元,找他前面所有的,如果前面的有比他大並且不是單一出現,就讓它出隊,取消標記。如果前邊都比他小就暫時留下這個並且標記一下,標記後的字元不在入隊。
**:
#include #include #include #include #include #include #include #include #include#include using namespace std;
#define ll long long
#define eps 0.001
#define inf 0x3f3f3f3f
#define pi acos(-1.0)
#define memset(a,b) memset(a,b,sizeof(a))
const int max=1e5+10;
deque dq;
int vis[max];
int main()
cout
}
上海高校程式設計聯賽 D CSL的字串 棧模擬
ascii碼表示的字元轉換成整數實測不超過200 具體多少懶得查了 分析 要求總的字典序最小,那就讓最小的字元盡可能放在前面,除非最小的字元前面比它大的字元存在只有乙個的情況,這種情況刪掉就不滿足包含原串所有字元的要求了,就不能刪,其他的後面還有的字元就可以隨便刪,由此我們用棧來實現這個操作。先用b...
CSL的字串(棧)
時間限制 c c 1秒,其他語言2秒 空間限制 c c 524288k,其他語言1048576k 64bit io format lld csl 以前不會字串演算法,經過一年的訓練,他還是不會 於是他打算向你求助。給定乙個字串,只含有可列印字元,通過刪除若干字元得到新字串,新字串必須滿足兩個條件 僅...
牛客 倒置字串
經過函式後變為 beijing.like i 輸入描述 每個測試輸入包含1個測試用例 i like beijing.輸入用例長度不超過100 輸出描述 依次輸出倒置之後的字串,以空格分割 1.先把字串整體倒轉 反轉前 i like beijing.反轉後1 gnijied ekil i 2.把字元傳...