题目来源:
leetcode题目,网址:2231. 按奇偶性交换后的最大数字 - 力扣(LeetCode)
解题思路:
获得数字的每一位,从左到右按照奇偶性相同的原则将数字从大到小拼成结果即可。
解题代码:
class Solution {
public int largestInteger(int num) {
int[] nums=new int[10];
Stack<Boolean> stack=new Stack<>();//true 表示偶数 false表示奇数
while(num!=0){
int temp=num%10;
nums[temp]++;
stack.push(temp%2==0);
num=num/10;
}
int even=8;
int odd=9;
while(!stack.isEmpty()){
boolean flag=stack.pop();
int temp=0;
if(flag){
while(nums[even]==0){
even=even-2;
}
nums[even]--;
temp=even;
}else{
while(nums[odd]==0){
odd=odd-2;
}
nums[odd]--;
temp=odd;
}
num=num*10+temp;
}
return num;
}
}
总结:
官方题解是将数字转化为字符数组后在奇偶性相同时排序。
parity 奇偶性