
本文属于「征服LeetCode」系列文章之一这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁本系列将至少持续到刷完所有无锁题之日为止由于LeetCode还在不断地创建新题本系列的终止日期可能是永远。在这一系列刷题文章中我不仅会讲解多种解题思路及其优化还会用多种编程语言实现题解涉及到通用解法时更将归纳总结出相应的算法模板。为了方便在PC上运行调试、分享代码文件我还建立了相关的仓库https://github.com/memcpy0/LeetCode-Conquest。在这一仓库中你不仅可以看到LeetCode原题链接、题解代码、题解文章链接、同类题目归纳、通用解法总结等还可以看到原题出现频率和相关企业等重要信息。如果有其他优选题解还可以一同分享给他人。由于本系列文章的内容随时可能发生更新变动欢迎关注和收藏征服LeetCode系列文章目录一文以作备忘。给你一个字符串数组words其中每个字符串表示一个由小写英文字母组成的单词。同时给你一个长度为 26 的整数数组weights其中weights[i]表示第i个小写英文字母的权重。单词的权重定义为其所有字符权重的总和。对于每个单词将其权重对 26 取模并将结果按字母倒序映射到一个小写英文字母0 - z, 1 - y, ..., 25 - a。返回一个由所有单词映射后的字符按顺序连接而成的字符串。示例 1输入: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]输出:rij解释abcd的权重是5 3 12 14 34。对 26 取模的结果是34 % 26 8映射为r。def的权重是14 1 2 17。对 26 取模的结果是17 % 26 17映射为i。xyz的权重是7 7 2 16。对 26 取模的结果是16 % 26 16映射为j。因此连接映射字符后形成的字符串是rij。示例 2输入: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]输出:yyy解释每个单词的权重均为 1。对 26 取模的结果是1 % 26 1映射为y。因此连接映射字符后形成的字符串是yyy。示例 3输入: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]输出:g解释abcd的权重是7 5 3 4 19。对 26 取模的结果是19 % 26 19映射为g。因此连接映射字符后形成的字符串是g。提示1 words.length 1001 words[i].length 10weights.length 261 weights[i] 100words[i]仅由小写英文字母组成。方法 按题意模拟「将结果按字母倒序映射到一个小写英文字母」相当于将z zz减去【权重取模后的值】减0 00就是z zz减1 11就是y yy…… 减25 2525就是a aa。classSolution{publicStringmapWordWeights(String[]words,int[]weights){intnwords.length;char[]ansnewchar[n];for(inti0;in;i){intsum0;for(charch:words[i].toCharArray()){sumweights[ch-a];}ans[i](char)(z-sum%26);}returnnewString(ans);}}classSolution{public:stringmapWordWeights(vectorstringwords,vectorintweights){intnwords.size();stringans(n,0);for(inti0;in;i){intsum0;for(charch:words[i]){sumweights[ch-a];}ans[i]z-sum%26;}returnans;}};classSolution:defmapWordWeights(self,words:List[str],weights:List[int])-str:ans[]ord_aord(a)ord_zord(z)forwinwords:ssum(weights[ord(ch)-ord_a]forchinw)ans.append(chr(ord_z-s%26))return.join(ans)funcmapWordWeights(words[]string,weights[]int)string{ans:make([]byte,len(words))fori,w:rangewords{sum:0for_,ch:rangew{sumweights[ch-a]}ans[i]z-byte(sum%26)}returnstring(ans)}复杂度分析时间复杂度O ( L ) O(L)O(L)其中L LL是所有w o r d s [ i ] words[i]words[i]长度之和。空间复杂度O ( 1 ) O(1)O(1)返回值不计入。