ایک نمبر کو ہیکساڈیسمل لیٹکوڈ حل میں تبدیل کریں


مشکل سطح آرام سے
اکثر پوچھا جاتا ہے فیس بک مائیکروسافٹ
بٹ ہیرا پھیری

مسئلہ ایک نمبر کو ہیکساڈسیمل لیٹکوڈ حل میں تبدیل کریں ، جو ہمیں ایک عدد صحیح فراہم کرتا ہے۔ پھر دیئے گئے کو تبدیل کرنے کے لئے ہم سے دعا گو ہیں عددی اعشاریہ نمبر نظام میں ہیکساڈسیمل نمبر سسٹم۔ مزید باضابطہ طور پر ، سوال کا تقاضا ہے کہ ہم بیس 10 میں دیئے گئے ایک انٹیجر کو بیس 16 کی نمائندگی میں تبدیل کریں۔ ہم پہلے ہی ایک پریشانی حل کر چکے تھے جہاں اعشاری نمبر نظام میں ہمیں ایک نمبر دیا گیا تھا۔ اور اسے اساس سات میں تبدیل کرنا پڑا۔ لہذا ، آگے بڑھنے سے پہلے ، آئیے کچھ مثالوں پر ایک نظر ڈالیں۔

مثال کے طور پر

26
1a

ایک نمبر کو ہیکساڈیسمل لیٹکوڈ حل میں تبدیل کریں

وضاحت: یہ تبادلہ آسان ہے ، اگر ہیکساڈیسیمل نمبر سسٹم کے بارے میں جاننا پڑے۔ لیکن اگر آپ اس سے لاعلم ہیں تو ، دیئے گئے نمبر کو بیس 16 کی نمائندگی میں تبدیل کریں۔ ہم بار بار تقسیم اور بقیہ ذخیرہ کرکے یہ کرتے ہیں۔ ایک چیز جس کو نوٹ کریں ، 10 کی نمائندگی ہیکساڈیسمل اشارے میں 'a' کے ذریعے کی گئی ہے۔

-1
ffffffff

وضاحت: چونکہ منفی اعداد کو اپنے 2 کے اضافی اشارے کے طور پر محفوظ کیا جاتا ہے۔ -1 اس کے 2s تکمیلی نوٹیشن میں 11111111111111111111111111111111 ہے۔ لہذا ، ہم صرف اسے ہیکساڈیسمل میں تبدیل کرتے ہیں جو آؤٹ پٹ میں دکھایا گیا ہے۔

ایک نمبر کو ہیکساڈسمل لیٹ کوڈ حل میں تبدیل کرنے کے لئے اپروچ

مسئلے میں گہرا غوطہ لگانے سے پہلے ایک نمبر کو ہیکساڈسیمل لیٹکوڈ حل میں تبدیل کریں۔ آئیے پہلے خود کو ہیکساڈیسیمل نمبر سسٹم سے آشنا کریں۔ لہذا ، ہیکساڈیسیمل نمبر سسٹم بھی اعشاریہ نمبر نظام کی طرح ہے لیکن 10 سے 15 نمبروں کو 'a' سے 'f' تک لوئر کیس حرفی کا استعمال کرتے ہوئے دکھایا جاتا ہے۔ تو ، ہم ایک اعشاریہ اعداد نظام میں آسانی سے کسی انٹیجر کو بیس 16 کی نمائندگی میں تبدیل کر سکتے ہیں۔ اور تبادلوں کے بعد ، ہم صرف 10 - 15 کی تعداد کو ایک - ایف کے ساتھ بدل دیتے ہیں۔ لیکن کیا ، ہم منفی تعداد کے ساتھ کرتے ہیں؟ چونکہ بائنری سسٹم میں منفی نمبر 2s تکمیلی اشارے میں محفوظ ہیں۔ ہم تعداد کو بغیر دستخط شدہ انٹ میں آسانی سے اسٹور کرتے ہیں اور اسے بیس 16 میں تبدیل کرتے ہیں۔

جاوا زبان میں کوڈ بھی ایک ہی چیز کو انجام دیتا ہے لیکن تھوڑا سا ہیرا پھیری کا استعمال کرتے ہوئے تھوڑا سا مختلف انداز میں لاگو ہوتا ہے۔ تو ، پہلے ہم 15 کے ساتھ اور دیئے گئے نمبر کو لیتے ہیں۔ یہ آپریشن 16 کے ساتھ موڈ لینے کے مترادف ہے۔ پھر بائیں شفٹ کا استعمال 16 کے ساتھ ڈویژن کے مترادف ہے۔

ضابطے

ایک نمبر کو ہیکساڈسیمل لیٹکوڈ حل میں تبدیل کرنے کیلئے C ++ کوڈ

#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

ایک نمبر کو ہیکساڈسیمل لیٹکوڈ حل میں تبدیل کرنے کے لئے جاوا کوڈ

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

پیچیدگی کا تجزیہ

وقت کی پیچیدگی

O (M (n) لاگ این)، جہاں n دیئے گئے ان پٹ کی لمبائی ہے ، M (n) وہ وقت ہے جس میں دو 2 بٹ نمبروں کو تقسیم کرنے میں وقت لگتا ہے۔ لہذا ، وقت کی پیچیدگی لوگرتھمک ہے۔

خلائی پیچیدگی

O (1) ، چونکہ ہم نے ہر ہندسے سے متعلق اعداد و شمار کو نمبر میں محفوظ نہیں کیا تھا۔ جگہ کی پیچیدگی مستقل ہے۔