Lexicographic Order

Lexicographic Order

(https://codeforces.com/group/L9GOcnr1dm/contest/422381/problem/L)

比较简单的一道题目,主要理解什么是字典序就好了

它要求我们以给定的字符串去构建一个最大字典序的字符串且长度不超过m

那么我们能知道最大字典序(小写的)肯定就是‘z’所以我们需要添加m-n个‘z’即可。

再然后我们需要满足构造的新字符串的字典序要小于原字符串,那么我们只需要修改原字符串的最后一个字母

PS:这里要考虑最后一个字符是否是‘a’的情况

如果是,那么直接删去‘a’即可构造完毕,不需要再添加‘z’(特殊情况!)

反之要添加‘z’;

Acode

string s = "abcdefghijklmnopqrstuvwxyz";
int main() {
    int n,m;cin >> n >> m;
    string aim;cin >> aim;
    if(aim[aim.size()-1] == 'a'){
        for (int i = 0; i < aim.size()-1; i++) {
            cout << aim[i];
        }
        cout << endl;
    }else{
        for (int i = 0; i < s.size(); i++) {
            if(s[i] == aim[aim.size()-1]){
                aim[aim.size()-1] = s[i-1];break;
            }
        }
        string ad;
        for (int i = 1; i <= m-n; i++) {
            ad += 'z';
        }
        string ans = aim + ad;
        cout << ans << endl;
    }
    return 0;
}
posted @ 2023-01-31 18:13  TFOREVERY  阅读(12)  评论(0编辑  收藏  举报