b_lc_具有给定数值的最小字符串(小思维)

给你两个整数 n 和 k 。返回 长度 等于 n 且 数值 等于 k 的 字典序最小 的字符串。

思路:简单贪心,由于k的范围为[n,26],所以题目一定有解(最小是aa..aa,最大是zz..zz);
这里将k提早减去一个n,由于已经让字符串填满了,剩下的事情就是将ans变得字典序尽量考前,也就是大的字符尽量出现在后面

class Solution {
public:
    string getSmallestString(int n, int k) {
        string ans; ans.resize(n), k-=n;
        for (int i=n-1; ~i; i--) {
            int t=min(25, k);
            ans[i]=(char)'a'+t, k-=t;
        }
        return ans;
    }
};
原文地址:https://www.cnblogs.com/wdt1/p/14018701.html