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;
}
};