Một số thập phân có thể chuyển đổi thành dạng Hexspeak bằng cách trước tiên chuyển thành chuỗi hexadecimal in hoa, sau đó thay thế tất cả chữ số 0 bằng chữ O, và chữ số 1 bằng chữ I. Dạng biểu diễn này hợp lệ nếu và chỉ nếu nó chỉ chứa các chữ cái trong tập {A, B, C, D, E, F, I, O}.
Cho chuỗi num đại diện cho số nguyên thập phân N, tìm biểu diễn Hexspeak của N nếu hợp lệ, ngược lại trả về "ERROR". Ví dụ, num = "257" cho kết quả "IOI" vì 257 trong hex là 101.
Để giải quyết, thực hiện các bước sau:
- x := dạng hex của số
- ans := chuỗi rỗng
- Tạo một dictionary: {10: 'A', 11: 'B', 12: 'C', 13: 'D', 14: 'E', 15: 'F', 1: 'I', 0: 'O'}
- Với mỗi ký tự i trong x:
- Nếu i có trong dictionary, ans := ans + d[i], ngược lại trả về "ERROR"
- Trả về ans
Ví dụ
class Solution(object):
def convertToHex(self, n):
res = []
while n > 0:
res.append(n % 16)
n //= 16
return res[::-1]
def toHexspeak(self, num):
x = self.convertToHex(int(num))
ans = ""
d = {10: "A", 11: "B", 12: "C", 13: "D", 14: "E", 15: "F", 0: "O", 1: "I"}
for i in x:
if i in d:
ans += d[i]
else:
return "ERROR"
return ans
ob1 = Solution()
print(ob1.toHexspeak("659724"))
Đầu vào
"659724"
Kết quả
"AIIOC"