# 2429. Minimize XOR ###### tags: `Leetcode` `Medium` `Bit Manipulation` `Greedy` Link: https://leetcode.com/problems/minimize-xor/description/ ## 思路 ```Integer.toBinaryString(num1)```可以直接把一个数转成它的二进制字串 ```Integer.parseInt(sb.toString(),2)```可以直接把二进制字串变成int 先数出num2里面有多少个1 如果算出num1的binary表达式 从前往后遍历num1如果当前位是1 并且cnt不是0(还有1可以用) 就先用1(先满足前面的才能minimize结果) 如果剩的还没遍历的位置=cnt 说明后面无论怎样都要用1塞满 就用1 ## Code ```java= class Solution { public int minimizeXor(int num1, int num2) { int cnt = Integer.bitCount(num2); String s1 = Integer.toBinaryString(num1); StringBuilder sb = new StringBuilder(); if(cnt>s1.length()) return (1<<cnt)-1; for(int i=0; i<s1.length(); i++){ if(s1.charAt(i)=='1' && cnt!=0){ sb.append(1); cnt--; } else if(s1.length()-i==cnt && cnt!=0){ sb.append(1); cnt--; } else sb.append(0); } return Integer.parseInt(sb.toString(),2); } } ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up