题解 | 小红的字符生成

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        int x = Integer.parseInt(new Scanner(System.in).nextLine().trim());
        StringBuffer sb = new StringBuffer();
        //设定x<1000,不会出现z
        String s = Integer.toBinaryString(x);
        // System.out.println(s);
        for(int i=s.length()-1;i>=0;i--){
            // System.out.println(s.substring(i,i+1));
            if(s.substring(i,i+1).equals("0")) continue;
            sb.append(Character.toString((char)(s.length()-i-1+'a')));
        }
        System.out.println(sb.toString());
    }
}

思路:如果用if-else做太复杂了,看透了本质发现其实就是贪心+二进制,贪心指的是尽量找大的字母,二进制指的是将x转化为它的二进制,这样比较方便找大的字母

处理:难点在于知不知道字母和数字的运算,java要先把数字+字母转化为char,再用Character的toString方法化为String,拼到答案里面去

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务