405. Convert a Number to Hexadecimal

LeetCode easy original: C# #array #bit-manipulation #csharp #easy #leetcode #string
Il testo del problema è tradotto dal russo per la lingua selezionata. Il codice resta invariato.

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

Esempio:

Input: num = 26

Output: "1a"

C# soluzione

abbinato/originale
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++ soluzione

bozza automatica, rivedere prima dell'invio
#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 soluzione

abbinato/originale
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 soluzione

abbinato/originale
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 soluzione

abbinato/originale
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 soluzione

abbinato/originale
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 строку результата и удалите ведущие нули, если они есть. Если stringa пустая, return "0".

😎

Vacancies for this task

offerte attive with overlapping task tags are mostrati.

Tutte le offerte
Non ci sono ancora offerte attive.