1. 程式人生 > >顏色反轉(百度2017秋招真題)

顏色反轉(百度2017秋招真題)

顏色反轉(百度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(); } }