RGB色值转换为整数值| 豆包MarsCode AI刷题

53 阅读2分钟

问题描述

小M需要一个函数,用于将RGB颜色值转换为相应的十六进制整数值。RGB色值以字符串的形式给出,如"rgb(192, 192, 192)",需要转换为对应的整数值。


测试样例

样例1:

输入:rgb = "rgb(192, 192, 192)"
输出:12632256

样例2:

输入:rgb = "rgb(100, 0, 252)"
输出:6553852

样例3:

输入:rgb = "rgb(33, 44, 55)"
输出:2174007

样例4:

输入:rgb = "rgb(255, 255, 255)"
输出:16777215

样例5:

输入:rgb = "rgb(0, 0, 0)"
输出:0

问题理解

你需要将一个表示RGB颜色值的字符串(如"rgb(192, 192, 192)")转换为对应的十六进制整数值。RGB颜色值由三个整数组成,分别表示红色(R)、绿色(G)和蓝色(B)的强度,每个整数的取值范围是0到255。

数据结构选择

  • 输入:一个表示RGB颜色值的字符串。
  • 输出:一个整数,表示对应的十六进制值。

算法步骤

  1. 提取RGB值

    • 使用正则表达式或字符串操作从输入字符串中提取出三个整数值。
    • 例如,从"rgb(192, 192, 192)"中提取出192192192
  2. 转换为整数

    • 将提取出的字符串转换为整数。
  3. 转换为十六进制字符串

    • 将每个整数转换为两位的十六进制字符串。
    • 例如,192转换为C0
  4. 拼接十六进制字符串

    • 将三个十六进制字符串拼接成一个完整的十六进制字符串。
    • 例如,C0C0C0
  5. 转换为整数

    • 将拼接好的十六进制字符串转换为整数。

实现代码

    public static int solution(String rgb) {
        // 使用正则表达式提取RGB值
        String[] parts = rgb.replace("rgb(", "").replace(")", "").split(",");
        
        // 将提取的字符串转换为整数
        int r = Integer.parseInt(parts[0].trim());
        int g = Integer.parseInt(parts[1].trim());
        int b = Integer.parseInt(parts[2].trim());
        
        // 将RGB值转换为十六进制字符串并拼接
        String hex = String.format("%02X%02X%02X", r, g, b);
        
        // 将十六进制字符串转换为整数
        int result = Integer.parseInt(hex, 16);
        
        return result;
    }

    public static void main(String[] args) {
        // 你可以添加更多测试用例
        System.out.println(solution("rgb(192, 192, 192)") == 12632256);
        System.out.println(solution("rgb(100, 0, 252)") == 6553852);
        System.out.println(solution("rgb(33, 44, 55)") == 2174007);
    }
}