问题描述
小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颜色值的字符串。
- 输出:一个整数,表示对应的十六进制值。
算法步骤
-
提取RGB值:
- 使用正则表达式或字符串操作从输入字符串中提取出三个整数值。
- 例如,从
"rgb(192, 192, 192)"中提取出192,192,192。
-
转换为整数:
- 将提取出的字符串转换为整数。
-
转换为十六进制字符串:
- 将每个整数转换为两位的十六进制字符串。
- 例如,
192转换为C0。
-
拼接十六进制字符串:
- 将三个十六进制字符串拼接成一个完整的十六进制字符串。
- 例如,
C0C0C0。
-
转换为整数:
- 将拼接好的十六进制字符串转换为整数。
实现代码
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);
}
}