A decimal number can be converted to its Hexspeak representation by first converting it to an uppercase hexadecimal string, then replacing all occurrences of the digit '0'
with the letter 'O'
, and the digit '1'
with the letter 'I'
. Such a representation is valid if and only if it consists only of the letters in the set {'A', 'B', 'C', 'D', 'E', 'F', 'I', 'O'}
.
Given a string num
representing a decimal integer n
, return the Hexspeak representation of n
if it is valid, otherwise return "ERROR"
.
Example 1:
Input: num = "257" Output: "IOI" Explanation: 257 is 101 in hexadecimal.
Example 2:
Input: num = "3" Output: "ERROR"
Constraints:
1 <= num.length <= 12
num
does not contain leading zeros.- num represents an integer in the range
[1, 1012]
.
class Solution:
def toHexspeak(self, num: str) -> str:
s = set('ABCDEFIO')
t = hex(int(num))[2:].upper().replace('0', 'O').replace('1', 'I')
return t if all(c in s for c in t) else 'ERROR'
class Solution {
private static final Set<Character> S = Set.of('A', 'B', 'C', 'D', 'E', 'F', 'I', 'O');
public String toHexspeak(String num) {
String t = Long.toHexString(Long.valueOf(num)).toUpperCase().replace("0", "O").replace("1", "I");
for (char c : t.toCharArray()) {
if (!S.contains(c)) {
return "ERROR";
}
}
return t;
}
}
class Solution {
public:
string toHexspeak(string num) {
stringstream ss;
ss << hex << stol(num);
string t = ss.str();
for (int i = 0; i < t.size(); ++i) {
if (t[i] >= '2' && t[i] <= '9') return "ERROR";
if (t[i] == '0') t[i] = 'O';
else if (t[i] == '1') t[i] = 'I';
else t[i] = t[i] - 32;
}
return t;
}
};
func toHexspeak(num string) string {
x, _ := strconv.Atoi(num)
t := strings.ToUpper(fmt.Sprintf("%x", x))
t = strings.ReplaceAll(t, "0", "O")
t = strings.ReplaceAll(t, "1", "I")
for _, c := range t {
if c >= '2' && c <= '9' {
return "ERROR"
}
}
return t
}