← Static tasks

1256. Encode Number

leetcode medium

#csharp#leetcode#medium#string

Task

Даны список слов, список отдельных букв (могут повторяться) и оценка каждого символа. Верните максимальную оценку любого правильного набора слов, образованного с помощью заданных букв (words[i] не может быть использовано два или более раз). Не обязательно использовать все символы в буквах, каждая буква может быть использована только один раз. Оценка букв 'a', 'b', 'c', ... , 'z' задаются значениями score[0], score[1], ... , score[25] соответственно.

Пример:

Input: num = 23

Output: "1000"

C# solution

matched/original
public class Solution {
    public string Encode(int num) {
        if (num == 0) return "";
        return Convert.ToString(num - 1, 2);
    }
}

C++ solution

auto-draft, review before submit
#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 Encode(int num) {
        if (num == 0) return "";
        return Convert.ToString(num - 1, 2);
    }
}

Java solution

matched/original
public class Solution {
    public String encode(int num) {
        if (num == 0) return "";
        return Integer.toBinaryString(num - 1);
    }
}

JavaScript solution

matched/original
function encode(num) {
    if (num === 0) return "";
    return (num - 1).toString(2);
}

Explanation

Algorithm

На основе предоставленной таблицы можно выявить закономерность для преобразования целого числа n в строку f(n)

Из таблицы видно, что последовательность строк соответствует последовательности чисел в двоичной системе счисления за исключением начального значения n = 0.

Таким образом, можно вывести, что:

Для каждого значения n > 0, функция f(n) представляет собой двоичное представление числа (n - 1).

😎