顏色反轉(百度2017秋招真題)
阿新 • • 發佈:2019-01-13
顏色反轉(百度2017秋招真題)
題目描述
在 Web 開發中,通常使用 16 進位制 RGB 表示一個顏色。
例 如 #0000FF 表示藍色,#FF7F50 表示珊瑚紅。在這道題中,我們要求把給定的一種顏色取反,方法是把 RGB 的每個位轉換成十進位制 rgb,再用 255 減去,再轉換成 16 進位制。例如藍色取反是黃色(#FFFF00)。
輸入
請從控制檯讀取輸入,輸入不超過50行,每行包含一個16進位制 RGB 表示一種顏色,保證題目中的字母均大寫。
輸出
請向控制檯輸出你的結果,對於讀取的每一行輸入,輸出一行格式相同的 16 進位制 RGB 表示取反後的顏色,要求字母也是大寫。
樣例輸入
0000FF
FFFF00
樣例輸出
FFFF00
0000FF
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.Scanner;
public class Main {
private static String reverseColor (String str) {
String result = "";
int len = str.length();
for (int i = 1; i < len; i++) {
char tmp = str.charAt(i);
switch(tmp){
case '0': result+='F'; break;
case '1': result+='E'; break;
case '2': result+='D' ; break;
case '3': result+='C'; break;
case '4': result+='B'; break;
case '5': result+='A'; break;
case '6':
case '7':
case '8':
case '9': result+=(15-(tmp-'0')); break;
case 'A':result+='5';break;
case 'B':result+='4';break;
case 'C':result+='3';break;
case 'D':result+='2';break;
case 'E':result+='1';break;
case 'F':result+='0';break;
default: break;
}
}
return result;
}
public static void main(String[] args) throws IOException {
Scanner in = new Scanner(new BufferedReader(new InputStreamReader(System.in)));
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));
String str;
while (in.hasNext()) {
str = in.next();
out.println("#"+reverseColor(str));
}
out.flush();
}
}