ປ່ຽນ ຈຳ ນວນ ໜຶ່ງ ເປັນ Hexadecimal Leetcode Solution


ລະດັບຄວາມຫຍຸ້ງຍາກ Easy
ຖາມເລື້ອຍໆໃນ ເຟສບຸກ Microsoft
ການບິດເບືອນບິດ

ປັນຫາປ່ຽນເລກເປັນ Hexadecimal Leetcode Solution ໃຫ້ພວກເຮົາມີເລກເຕັມ. ຫຼັງຈາກນັ້ນ, ຂໍໃຫ້ພວກເຮົາປ່ຽນສິ່ງທີ່ໄດ້ຮັບ integer ໃນລະບົບເລກທົດສະນິຍົມຫາລະບົບ ຈຳ ນວນ hexadecimal. ຢ່າງເປັນທາງການ, ຄຳ ຖາມຮຽກຮ້ອງໃຫ້ພວກເຮົາປ່ຽນເລກເຕັມທີ່ໃຫ້ຢູ່ໃນພື້ນຖານ 10 ເປັນຕົວແທນຫຼັກ 16. ພວກເຮົາໄດ້ແກ້ໄຂບັນຫາແລ້ວທີ່ພວກເຮົາໄດ້ຮັບເລກໃນລະບົບເລກທົດສະນິຍົມ. ແລະຕ້ອງປ່ຽນມັນມາເປັນພື້ນຖານ 7. ສະນັ້ນ, ກ່ອນທີ່ຈະກ້າວຕໍ່ໄປ, ລອງພິຈາລະນາບາງຕົວຢ່າງ.

ຍົກຕົວຢ່າງ

26
1a

ປ່ຽນ ຈຳ ນວນ ໜຶ່ງ ເປັນ Hexadecimal Leetcode Solution

ຄໍາອະທິບາຍ: ການປ່ຽນໃຈເຫລື້ອມໃສນີ້ແມ່ນງ່າຍ, ຖ້າເກີດຂື້ນກັບຮູ້ກ່ຽວກັບລະບົບເລກ ໝາຍ ເລກໃຫຍ່. ແຕ່ຖ້າທ່ານບໍ່ຮູ້ກ່ຽວກັບມັນ, ພຽງແຕ່ປ່ຽນ ຈຳ ນວນທີ່ລະບຸໄວ້ເປັນຕົວແທນຫຼັກ 16. ພວກເຮົາເຮັດແນວນັ້ນໂດຍການແບ່ງປັນຊໍ້າຊາກແລະການເກັບຮັກສາສ່ວນທີ່ເຫຼືອ. ສິ່ງຫນຶ່ງທີ່ຄວນສັງເກດວ່າ, 10 ແມ່ນຕົວແທນໂດຍໃຊ້ 'a' ໃນ ໝາຍ ເລກສິບຫົກ.

-1
ffffffff

ຄໍາອະທິບາຍ: ນັບຕັ້ງແຕ່ຕົວເລກລົບແມ່ນຖືກເກັບໄວ້ເປັນຂໍ້ສັງລວມ 2 ຂອງພວກມັນ. ການ in1 ໃນການສັງລວມຂໍ້ມູນ 2s ຂອງມັນແມ່ນ 11111111111111111111111111111111. ດັ່ງນັ້ນ, ພວກເຮົາພຽງແຕ່ປ່ຽນສິ່ງນີ້ເປັນ hexadecimal ເຊິ່ງສະແດງຢູ່ໃນຜົນຜະລິດ.

ວິທີການ ສຳ ລັບການປ່ຽນ ຈຳ ນວນ ໜຶ່ງ ເປັນ Hexadecimal Leetcode Solution

ກ່ອນທີ່ຈະເຈາະເລິກເຂົ້າໄປໃນບັນຫາປ່ຽນເລກເປັນ Hexadecimal Leetcode Solution. ທຳ ອິດໃຫ້ເຮົາຄຸ້ນເຄີຍກັບລະບົບ ຈຳ ນວນ hexadecimal. ສະນັ້ນ, ລະບົບ ຈຳ ນວນ hexadecimal ກໍ່ຄ້າຍຄືກັບລະບົບເລກທົດສະນິຍົມແຕ່ວ່າຕົວເລກ 10 ເຖິງ 15 ແມ່ນຕົວແທນໂດຍໃຊ້ຕົວອັກສອນຕົວນ້ອຍຈາກ 'a' ເຖິງ 'f'. ດັ່ງນັ້ນ, ພວກເຮົາພຽງແຕ່ສາມາດປ່ຽນເລກເຕັມໃນລະບົບເລກທົດສະນິຍົມມາເປັນຕົວແທນຫຼັກ 16. ແລະຫລັງຈາກປ່ຽນໃຈເຫລື້ອມໃສ, ພວກເຮົາພຽງແຕ່ທົດແທນເລກ 10 - 15 ດ້ວຍ a - f. ແຕ່ສິ່ງທີ່, ພວກເຮົາເຮັດຫຍັງກັບຕົວເລກລົບ? ເນື່ອງຈາກຕົວເລກລົບຈະຖືກເກັບໄວ້ໃນ 2s ໃຫ້ສົມເຫດສົມຜົນໃນລະບົບຖານສອງ. ພວກເຮົາພຽງແຕ່ເກັບຮັກສາເລກທີ່ຢູ່ໃນ int ທີ່ບໍ່ໄດ້ລົງນາມແລະພຽງແຕ່ປ່ຽນເປັນຖານ 16.

ລະຫັດໃນພາສາ Java ຍັງປະຕິບັດຄືກັນແຕ່ຖືກຈັດຕັ້ງປະຕິບັດໃນລັກສະນະທີ່ແຕກຕ່າງກັນໂດຍໃຊ້ການດັດແປງເລັກນ້ອຍ. ດັ່ງນັ້ນ, ທຳ ອິດພວກເຮົາເອົາ & ຂອງ ຈຳ ນວນທີ່ລະບຸໄວ້ກັບ 15. ການ ດຳ ເນີນງານນີ້ແມ່ນເທົ່າກັບການ ນຳ ໃຊ້ mod ກັບ 16. ຫຼັງຈາກນັ້ນການ ນຳ ໃຊ້ການປ່ຽນຊ້າຍແມ່ນເທົ່າກັບການແບ່ງໂດຍໃຊ້ 16.

ລະຫັດ

ລະຫັດ C ++ ເພື່ອແປງ ຈຳ ນວນ ໜຶ່ງ ເປັນ Hexadecimal Leetcode Solution

#include <bits/stdc++.h>
using namespace std;

const string decToHex = "0123456789abcdef";

string toHex(int n){
    if(n==0)
        return "0";
    unsigned int num = n;
    string ans = "";
    while(num > 0){
        ans = decToHex[num%16] + ans;
        num /= 16;
    }
    return ans;
}

int main(){
    cout<<toHex(26);
}
1a

ລະຫັດ Java ໃນການແປງ ຈຳ ນວນ ໜຶ່ງ ເປັນ Hexadecimal Leetcode Solution

import java.util.*;
import java.lang.*;
import java.io.*;

class Solution
{
  public static String toHex(int n) {
        String decToHex = "0123456789abcdef";
        if(n==0)
            return "0";
        int num = n;
        String ans = "";
        while(num != 0){
            ans = decToHex.charAt(num&15) + ans;
            num = num >>> 4;
        }
        return ans;
    }
    
  public static void main (String[] args) throws java.lang.Exception
  {
    System.out.print(toHex(-1));
  }
}
ffffffff

ການວິເຄາະຄວາມສັບສົນ

ຄວາມສັບສົນເວລາ

ໂອ (M (n) log n), ບ່ອນທີ່ n ແມ່ນຄວາມຍາວຂອງວັດສະດຸປ້ອນທີ່ໃຫ້, M (n) ແມ່ນເວລາທີ່ຈະຕ້ອງແບ່ງສອງຕົວເລກ 2 ບິດ. ດັ່ງນັ້ນ, ຄວາມສັບສົນເວລາແມ່ນ logarithmic.

ຄວາມສັບສົນໃນອະວະກາດ

ໂອ (1), ເນື່ອງຈາກວ່າພວກເຮົາບໍ່ໄດ້ເກັບຂໍ້ມູນໃດໆກ່ຽວກັບແຕ່ລະຕົວເລກໃນ ຈຳ ນວນນັ້ນ. ຄວາມສັບສົນຂອງພື້ນທີ່ແມ່ນຄົງທີ່.