本博客所有出现的 [不一样的剑指offer] 系列,个人认为都比书上的题解更好理解。
概括:这道题的难点有2
1.隐形的大数问题,需要把int->string
2.深刻理解书上所写的
比较规则
,并灵活运用。
class Solution {
public:
string minNumber(vector<int> &nums) {
vector<string> strs;
string res;
//用一个for循环来将int->string
for (auto num:nums)
strs.push_back(to_string(num));
//或者用std::transform
// vector<string> ans(nums.size());
// transform(nums.begin(), nums.end(), ans.begin(), [](int a) -> string { return to_string(a); });
sort(strs.begin(), strs.end(), [](const string &a, const string &b){ return a + b < b + a; });
for (const auto &str:strs)
res += str;
return res;
}
};
对int
类型转string
类型的操作也可以参看屏蔽掉的部分,灵活运用STL库可太吊了。
个人见解,欢迎讨论指教!