java 如何通过将仅包含0和1的数字相加来生成字符串

gopyfrb3  于 2022-12-02  发布在  Java
关注(0)|答案(1)|浏览(157)

给定一个字符串(S)作为输入,您需要通过将仅包含“0”和“1”的数字相加来生成字符串,您需要找到生成字符串S所需的仅包含“0”和“1”的最小数字。
输入:3401要生成这个数字,我们需要将这四个数字相加:1101 + 1100 + 1100 + 0100 = 3401输入输出3027 3 3401 4
我试图通过将input作为int并将其分解为二进制,然后将其作为二进制读取来解决此问题,但无法做到这一点

wlwcrazw

wlwcrazw1#

首先,我们创建一个包含数字的每个数字的数组。为了创建最少数量的字符串,我们必须创建最大的数字。为此,我们使用每个可用的数字来形成一个字符串。如果使用了一个数字,我们将'1'附加到字符串,否则为'0'。然后,我们将使用的数字减1,并将数字减形成的数字。我们重复这个过程,直到数字为0。

Scanner sc  = new Scanner(System.in);
        String s = sc.next();
        int len = s.length();
        int[] arr = new int[len];
        for(int i=0;i<len;i++){
            arr[i] = Integer.parseInt(String.valueOf(s.charAt(i)));
        }

        int num = Integer.parseInt(s);
        while(num>0){
            StringBuilder temp = new StringBuilder();
            for(int i=0;i<len;i++){
                if(arr[i]>0){
                    temp.append(1);
                } else {
                    temp.append(0);
                }
                arr[i]--;
            }
            System.out.println(temp);
            int var = Integer.parseInt(temp.toString());
            num-=var;
        }

相关问题