题目描述
给你一个字符串数组nums和一个整数k。nums中的每个字符串都表示一个不含前导零的整数。
返回nums中表示第k大整数的字符串。
注意:重复的数字在统计时会视为不同元素考虑。例如,如果nums是[“1”,”2”,”2”],那么”2”是最大的整数,”2”是第二大的整数,”1”是第三大的整数。
Example 1:
输入:nums=[“3”,”6”,”7”,”10”],k=4 输出:”3” 解释: nums中的数字按非递减顺序排列为[“3”,”6”,”7”,”10”] 其中第4大整数是”3”
Example 2:
输入:nums = [“2”,”21”,”12”,”1”], k = 3 输出:”2” 解释: nums 中的数字按非递减顺序排列为 [“1”,”2”,”12”,”21”] 其中第 3 大整数是 “2”
Example 3:
输入:nums = [“0”,”0”], k = 2 输出:”0” 解释: nums 中的数字按非递减顺序排列为 [“0”,”0”] 其中第 2 大整数是 “0”
Constraints:
- 1 <= k <= nums.length <= 10^4
- 1 <= nums[i].length <= 100
- nums[i] 仅由数字组成
- nums[i] 不含任何前导零
解题思路
- 自定义字符串排序
C++代码
class Solution {
public:
static bool cmp(string& a, string& b){
return a.size() > b.size() || (a.size() == b.size() && a > b);
}
string kthLargestNumber(vector<string>& nums, int k) {
sort(nums.begin(), nums.end(), cmp);
string s = nums[k - 1];
return s;
}
};