Advertisement
Guest User

Untitled

a guest
Jul 22nd, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.29 KB | None | 0 0
  1. class Solution {
  2.  
  3. public String largestNumber(int[] nums) {
  4. Stack<Integer> stack = new Stack<>();
  5. for(int i = 0; i < nums.length;i++){
  6. int smallest = i;
  7. for(int j = i+1; j < nums.length; j++){
  8. if(compare(nums[j], nums[smallest])){
  9. smallest = j;
  10. }
  11. }
  12. int temp = nums[i];
  13. nums[i] = nums[smallest];
  14. nums[smallest] = temp;
  15. }
  16.  
  17. List<String> list = new ArrayList<>();
  18. for(int i = 0; i < nums.length;i++){
  19. while (nums[i]>=10){
  20. int temp = 0;
  21. temp = nums[i] % 10;
  22. nums[i] = nums[i]/10;
  23. stack.push(temp);
  24. }
  25. stack.push(nums[i]);
  26. while(!stack.isEmpty()){
  27. list.add(String.valueOf(stack.pop()));
  28. }
  29. }
  30.  
  31. StringBuilder sb = new StringBuilder();
  32. for(String s: list)
  33. sb.append(s);
  34.  
  35. return sb.toString();
  36.  
  37. }
  38.  
  39. public boolean compare(int a,int b){
  40. Stack<Integer> stack1 = new Stack<>();
  41. Stack<Integer> stack2 = new Stack<>();
  42.  
  43. while(a>=10){
  44. int temp = 0;
  45. temp = a%10;
  46. a= a / 10;
  47. stack1.push(temp);
  48. }
  49. while (b>=10){
  50. int temp = 0;
  51. temp = b%10;
  52. b = b/10;
  53. stack2.push(temp);
  54. }
  55. if(a<b) return false;
  56. else if(a>b) return true;
  57. else{
  58. if(!stack1.isEmpty()&&!stack2.isEmpty()){
  59.  
  60. return compare(numbuilder(stack1),numbuilder(stack2));}
  61.  
  62. if(stack1.isEmpty()&& stack2.isEmpty())return true;
  63. if(stack1.isEmpty()) return a>stack2.pop();
  64. else return stack1.pop()>b;}
  65. }
  66.  
  67. public int numbuilder(Stack stack){
  68. List<Integer> list = new ArrayList<>();
  69. while(!stack.isEmpty()){
  70. list.add(stack.pop());
  71. }
  72. int result1 = 0;
  73. for(int i = 0 ; i < list.size();i++){
  74. result1+= list.get(i)* Math.pow(10, list.size()-1-i);
  75. }
  76. return result1;
  77. }
  78.  
  79.  
  80.  
  81.  
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement