leetcode

Leetcode Solutions (0x6A73)
git clone https://git.pngu.org/leetcode
Log | Files | Refs | Submodules | README

commit fe4449f6bf1eb1a7e5e668705a033fb0743c4eee
parent d259ffeae14d4188ca694380359526a86db802e2
Author: Jack Sangdahl <jack@pngu.org>
Date:   Sat, 13 Jun 2026 19:44:40 -0600

3838. weighted word mapping

Diffstat:
Aweighted_word_mapping.c | 50++++++++++++++++++++++++++++++++++++++++++++++++++
Aweighted_word_mapping.py | 126+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 176 insertions(+), 0 deletions(-)

diff --git a/weighted_word_mapping.c b/weighted_word_mapping.c @@ -0,0 +1,50 @@ +// 3838. Weighted Word Mapping +#include "leetcode.h" + +/* + * you are given an array of strings 'words', where each string represents a + * word containing lowercase english letters. you are also given an integer + * array 'weights' of length 26, where 'weights[i]' represents the weight of the + * i'th lowercase english letter. the weight of a word is defined as the sum of + * the weights of its characters. for each word, take its weight modulo 26 and + * map the result to a lowercase english letter using reverse alphabetical + * order. return a string formed by concatenating the mapped characters for all + * words in order. + */ + +char *mapWordWeights(char **words, int wordsSize, int *weights, + int weightsSize) { + char *ans = (char *)malloc((wordsSize + 1) * sizeof(char)); + for (int i = 0; i < wordsSize; i++) { + int sum = 0; + for (char *j = words[i]; *j; j++) + sum += weights[*j - 'a']; + ans[i] = 'z' - sum % 26; + } + ans[wordsSize] = '\0'; + return ans; +} + +int main() { + char *wo1[] = {"abcd", "def", "xyz"}, *r1 = "rij"; + char *wo2[] = {"a", "b", "c"}, *r2 = "yyy"; + char *wo3[] = {"abcd"}, *r3 = "g"; + int we1[] = {5, 3, 12, 14, 1, 2, 3, 2, 10, 6, 6, 9, 7, + 8, 7, 10, 8, 9, 6, 9, 9, 8, 3, 7, 7, 2}; + int we2[] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; + int we3[] = {7, 5, 3, 4, 3, 5, 4, 9, 4, 2, 2, 7, 10, + 2, 5, 10, 6, 1, 2, 2, 4, 1, 3, 4, 4, 5}; + char *mww1 = mapWordWeights(wo1, ARRAY_SIZE(wo1), we1, ARRAY_SIZE(we1)); + char *mww2 = mapWordWeights(wo2, ARRAY_SIZE(wo2), we2, ARRAY_SIZE(we2)); + char *mww3 = mapWordWeights(wo3, ARRAY_SIZE(wo3), we3, ARRAY_SIZE(we3)); + printf("%s\n", mww1); + assert(!strcmp(mww1, r1)); + printf("%s\n", mww2); + assert(!strcmp(mww2, r2)); + printf("%s\n", mww3); + assert(!strcmp(mww3, r3)); + free(mww1); + free(mww2); + free(mww3); +} diff --git a/weighted_word_mapping.py b/weighted_word_mapping.py @@ -0,0 +1,126 @@ +# 3838. Weighted Word Mapping + +""" +you are given an array of strings 'words', where each string represents a +word containing lowercase english letters. you are also given an integer +array 'weights' of length 26, where 'weights[i]' represents the weight of the +i'th lowercase english letter. the weight of a word is defined as the sum of +the weights of its characters. for each word, take its weight modulo 26 and +map the result to a lowercase english letter using reverse alphabetical +order. return a string formed by concatenating the mapped characters for all +words in order. +""" + + +class Solution: + def mapWordWeights(self, words: List[str], weights: List[int]) -> str: + ans = [] + for i in words: + total = 0 + for j in i: + total += weights[ord(j) - ord("a")] + ans.append(chr(ord("z") - total % 26)) + return "".join(ans) + + +if __name__ == "__main__": + obj = Solution() + print( + obj.mapWordWeights( + words=["abcd", "def", "xyz"], + weights=[ + 5, + 3, + 12, + 14, + 1, + 2, + 3, + 2, + 10, + 6, + 6, + 9, + 7, + 8, + 7, + 10, + 8, + 9, + 6, + 9, + 9, + 8, + 3, + 7, + 7, + 2, + ], + ) + ) + print( + obj.mapWordWeights( + words=["a", "b", "c"], + weights=[ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + ], + ) + ) + print( + obj.mapWordWeights( + words=["abcd"], + weights=[ + 7, + 5, + 3, + 4, + 3, + 5, + 4, + 9, + 4, + 2, + 2, + 7, + 10, + 2, + 5, + 10, + 6, + 1, + 2, + 2, + 4, + 1, + 3, + 4, + 4, + 5, + ], + ) + )