- 1、题目描述:
- 2、题目链接:
题目所在位置
-3、 设计思想:
详细操作流程看下图
-4、视频讲解链接B站视频讲解
-5、代码:
c++版本:
class Solution { public: /** * 最大数 * @param nums int整型vector * @return string字符串 */ //定义一个排序规则 static bool cmp(string a,string b){ return a + b > b + a; } string solve(vector<int>& nums) { vector<string> ve; //将整型的数字转化为字符串 for(int i = 0;i < nums.size();i ++){ ve.push_back(to_string(nums[i])); } //排序 sort(ve.begin(),ve.end(),cmp); //这个地方需要注意如果第一个字符串已经是0了,那么直接输出0 if(ve[0] == "0") return "0"; string res =""; //结果字符串 for(int i = 0;i < ve.size();i ++){ res += ve[i];//将排序好后的字符串一次相加就是最终的结果 } return res; } };
Java版本:
import java.util.*; public class Solution { /** * 最大数 * @param nums int整型一维数组 * @return string字符串 */ public String solve (int[] nums) { // write code here ArrayList<String> list = new ArrayList<>(); //将整型的数字转化为字符串 for(int i = 0;i < nums.length;i ++){ list.add(String.valueOf(nums[i])); } //排序 Collections.sort(list,new Comparator<String>(){ @Override public int compare(String a,String b){ return (b + a).compareTo(a + b); } }); //这个地方需要注意如果第一个字符串已经是0了,那么直接输出0 if(list.get(0).equals("0")) return "0"; StringBuilder res = new StringBuilder(); //结果字符串 for(int i = 0;i < list.size();i ++){//将排序好后的字符串一次相加就是最终的结果 res.append(list.get(i)); } return res.toString(); } }
Python版本:
# # 最大数 # @param nums int整型一维数组 # @return string字符串 # #比较规则 class cmp(str): def __lt__(x, y): return x+y > y+x class Solution: def solve(self , nums ): # write code here #将整型的数字转化为字符串 strs = [str(i) for i in nums] #排序 strs = sorted(strs,key = cmp) #这个地方需要注意如果第一个字符串已经是0了,那么直接输出0 if strs[0] == "0": return "0" return "".join(strs)