405. Convert a Number to Hexadecimal

LeetCode easy original: C# #array #bit-manipulation #csharp #easy #leetcode #string
Le texte du problème est traduit du russe pour la langue sélectionnée. Le code reste inchangé.

Если заgiven entier num, return строку, представляющую его шестнадцатеричное представление. Для отрицательных целых чисел используется метод дополнения до двух. Все буквы в строке ответа должны быть строчными, и в ответе не должно быть никаких ведущих нулей, кроме самого нуля. Примечание: Вам не разрешается использовать какие-либо встроенные библиотечные методы для непосредственного решения этой задачи.

Exemple:

Input: num = 26

Output: "1a"

C# solution

correspondant/original
public class Solution {
    public string ToHex(int num) {
        if (num == 0) return "0";
        char[] hexChars = "0123456789abcdef".ToCharArray();
        uint n = (uint)num;
        StringBuilder result = new StringBuilder();
        while (n > 0) {
            result.Append(hexChars[n % 16]);
            n /= 16;
        }
        char[] charArray = result.ToString().ToCharArray();
        Array.Reverse(charArray);
        return new string(charArray);
    }
}

C++ solution

brouillon automatique, à relire avant soumission
#include <bits/stdc++.h>
using namespace std;

// Auto-generated C++ draft from the C# solution. Review containers, LINQ and helper types before submit.
class Solution {
public:
    public string ToHex(int num) {
        if (num == 0) return "0";
        char[] hexChars = "0123456789abcdef".ToCharArray();
        uint n = (uint)num;
        StringBuilder result = new StringBuilder();
        while (n > 0) {
            result.Append(hexChars[n % 16]);
            n /= 16;
        }
        char[] charArray = result.ToString().ToCharArray();
        Array.Reverse(charArray);
        return new string(charArray);
    }
}

Java solution

correspondant/original
public class Solution {
    public String toHex(int num) {
        if (num == 0) return "0";
        char[] hexChars = "0123456789abcdef".toCharArray();
        long n = num;
        if (num < 0) n += 1L << 32;
        StringBuilder result = new StringBuilder();
        while (n > 0) {
            result.append(hexChars[(int)(n % 16)]);
            n /= 16;
        }
        return result.reverse().toString();
    }
}

JavaScript solution

correspondant/original
function toHex(num) {
    if (num === 0) return "0";
    let hexChars = "0123456789abcdef";
    if (num < 0) num += 2 ** 32;
    let result = [];
    while (num > 0) {
        result.push(hexChars[num % 16]);
        num = Math.floor(num / 16);
    }
    return result.reverse().join('');
}

Python solution

correspondant/original
def to_hex(num):
    if num == 0:
        return "0"
    hex_chars = "0123456789abcdef"
    if num < 0:
        num += 2 ** 32
    result = []
    while num > 0:
        result.append(hex_chars[num % 16])
        num //= 16
    return ''.join(result[::-1])

Go solution

correspondant/original
package main

import (
    "fmt"
    "strings"
)

func toHex(num int) string {
    if num == 0 {
        return "0"
    }
    hexChars := "0123456789abcdef"
    if num < 0 {
        num += 1 << 32
    }
    result := []byte{}
    for num > 0 {
        result = append(result, hexChars[num%16])
        num /= 16
    }
    for i, j := 0, len(result)-1; i < j; i, j = i+1, j-1 {
        result[i], result[j] = result[j], result[i]
    }
    return string(result)
}

func main() {
    fmt.Println(toHex(26))
    fmt.Println(toHex(-1))
}

Algorithm

Определите, является ли number отрицательным. Если да, преобразуйте его в положительное number с помощью метода дополнения до двух. Для этого прибавьте к числу 2^32 и используйте битовую операцию И с маской 0xFFFFFFFF.

Создайте строку с шестнадцатеричными символами. Последовательно делите number на 16 и добавляйте соответствующий символ к результату, пока number не станет равным нулю.

Переreturn строку результата и удалите ведущие нули, если они есть. Если chaîne пустая, return "0".

😎

Vacancies for this task

offres actives with overlapping task tags are affichés.

Toutes les offres
Il n'y a pas encore d'offres actives.