แนวคิด
สมมติว่ามีจำนวนเต็ม ให้ออกอัลกอริทึมแปลงเป็นเลขฐานสิบหก สำหรับจำนวนลบใช้วิธี two's complement
เช่น ถ้าอินพุตคือ 254 และ -12 ผลลัพธ์คือ fe และ fffffff4 ตามลำดับ
วิธีแก้:
- ถ้า num1 เท่ากับ 0: คืนค่า "0"
- num := num1
- s := สตริงว่าง
- while num ไม่เป็นศูนย์:
- temp := num mod 16
- ถ้า temp <= 9: s := s + temp เป็นตัวเลข
- มิฉะนั้น: s := s + temp เป็นตัวอักษร
- num := num / 16
- กลับลำดับอาร์เรย์ s
- คืนค่า s
ตัวอย่าง
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
string toHex(int num1){
if (num1 == 0) return "0";
u_int num = num1;
string s = "";
while (num) {
int temp = num % 16;
if (temp <= 9) s += (48 + temp);
else s += (87 + temp);
num = num / 16;
}
reverse(s.begin(), s.end());
return s;
}
};
main() {
Solution ob;
cout << (ob.toHex(254)) << endl;
cout << (ob.toHex(-12));
}
อินพุต
254 -12
เอาต์พุต
fe fffffff4