class Solution {
public:
string stringHash(string s, int k) {
}
};
3271. 哈希分割字符串
给你一个长度为 n
的字符串 s
和一个整数 k
,n
是 k
的 倍数 。你的任务是将字符串 s
哈希为一个长度为 n / k
的新字符串 result
。
首先,将 s
分割成 n / k
个 子字符串 ,每个子字符串的长度都为 k
。然后,将 result
初始化为一个 空 字符串。
我们依次从前往后处理每一个 子字符串 :
'a' → 0
,'b' → 1
,... ,'z' → 25
)。hashedChar
。hashedChar
对应的字符。result
的末尾。返回 result
。
示例 1:
输入:s = "abcd", k = 2
输出:"bf"
解释:
第一个字符串为 "ab"
,0 + 1 = 1
,1 % 26 = 1
,result[0] = 'b'
。
第二个字符串为: "cd"
,2 + 3 = 5
,5 % 26 = 5
,result[1] = 'f'
。
示例 2:
输入:s = "mxz", k = 3
输出:"i"
解释:
唯一的子字符串为 "mxz"
,12 + 23 + 25 = 60
,60 % 26 = 8
,result[0] = 'i'
。
提示:
1 <= k <= 100
k <= s.length <= 1000
s.length
能被 k
整除。s
只含有小写英文字母。原站题解
golang 解法, 执行用时: 0 ms, 内存消耗: 3.6 MB, 提交时间: 2024-09-18 10:07:50
func stringHash(s string, k int) string { n := len(s) ans := make([]byte, n/k) for i := 0; i < n; i += k { sum := 0 for _, b := range s[i : i+k] { sum += int(b - 'a') } ans[i/k] = 'a' + byte(sum%26) } return string(ans) }
python3 解法, 执行用时: 53 ms, 内存消耗: 16.6 MB, 提交时间: 2024-09-18 10:07:37
class Solution: def stringHash(self, s: str, k: int) -> str: ans = [] for i in range(0, len(s), k): total = sum(ord(c) for c in s[i: i + k]) - ord('a') * k ans.append(ascii_lowercase[total % 26]) return ''.join(ans)