列表

详情


3271. 哈希分割字符串

给你一个长度为 n 的字符串 s 和一个整数 k ,n 是 k 的 倍数 。你的任务是将字符串 s 哈希为一个长度为 n / k 的新字符串 result 。

首先,将 s 分割成 n / k 个 子字符串 ,每个子字符串的长度都为 k 。然后,将 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' 。

 

提示:

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: string stringHash(string s, int k) { } };

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)

上一题