部分文字列の辞書順最小
貪欲に見ていくが前計算を行い工夫して計算量を削減する。
006 - Smallest Subsequence(★5)
https://drken1215.hatenablog.com/entry/2021/10/10/195200
下記の条件式で悩んだので備忘録として
if(n-kk >= k-i){
//k-iは残り何文字必要か
//n-kkは今見てるカーソルおいてる所から後ろに何文字あるか
//n-kk < k-iだと今見てる所から全部とっても文字数足りないからこうしてる
res += c;
j=kk;
break;
}
1.文字列を前から見ていき ( があったらstackにpushする。
2.文字列に)があったらstackを(が見つかるまでpopする。
3.stack内に(が残っていたり、2をしている途中にstackが空になったら整合性が取れていない。