欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

连接可形成的最大值的二进制表示(Java) 418 每周竞赛题 1

最编程 2024-10-09 18:21:49
...

3309. 连接二进制表示可形成的最大数值

给你一个长度为 3 的整数数组 nums

现以某种顺序 连接 数组 nums 中所有元素的 二进制表示 ,请你返回可以由这种方法形成的 最大 数值。

注意 任何数字的二进制表示 不含 前导零。

输入: nums = [1,2,3]

输出: 30

解释:

按照顺序 [3, 1, 2] 连接数字的二进制表示,得到结果 "11110",这是 30 的二进制表示

nums恒定是三个元素,长度为3.

在Java中给定一个整数可以用Interger.parseInt(a,2) 2表示为二进制。将字符串 a 按照指定的基数 radix(在这里是二进制)解析为整数

Integer.toBinaryString(int i):

  • Integer 是 Java 中包装基本数据类型 int 的一个类。
  • toBinaryString 是 Integer 类中的一个静态方法,用于将一个整数转换为它的二进制字符串形式。
  • 该方法接受一个 int 类型的参数 i,返回一个表示此整数二进制形式的字符串。
class Solution {
    public int maxGoodNumber(int[] nums) {
        String[] arr=new String[nums.length];
        for(int i=0;i<nums.length;i++){
            arr[i]=Integer.toBinaryString(nums[i]);
        }
        Arrays.sort(arr,(a,b) ->Integer.parseInt(b+a,2) - Integer.parseInt(a+b,2));
        System.out.println(Arrays.toString(arr));
        StringBuilder sb=new StringBuilder();
        for(String s: arr){
            sb.append(s);
        }
        return Integer.parseInt(sb.toString(),2);
    }
}