100399. 哈希分割字符串 显示英文描述

  1. 哈希分割字符串 显示英文描述
    通过的用户数1343
    尝试过的用户数1347
    用户总通过次数1359
    用户总提交次数1564
    题目难度Medium
    给你一个长度为 n 的字符串 s 和一个整数 k ,n 是 k 的 倍数 。你的任务是将字符串 s 哈希为一个长度为 n / k 的新字符串 result 。

首先,将 s 分割成 n / k 个 子字符串 ,每个子字符串的长度都为 k 。然后,将 result 初始化为一个 空 字符串。

我们依次从前往后处理每一个 子字符串 :

一个字符的 哈希值 是它在 字母表 中的下标(也就是 'a' → 0 ,'b' → 1 ,... ,'z' → 25)。

将子字符串中字幕的 哈希值 求和。

将和对 26 取余,将结果记为 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 只含有小写英文字母。

java 复制代码
class Solution {
    public String stringHash(String s, int k) {
        
        int n = s.length();
        StringBuilder re = new StringBuilder();
        for(int i = 0; i < n; i+=k){
            int sum = 0;
            String ss = s.substring(i,i+k);
            for(char c : ss.toCharArray()){
                sum += c - 'a';
            }
            re.append((char)('a' + (sum % 26)));
        }
        
        return re.toString();
    }
}
相关推荐
机器学习之心1 分钟前
一区北方苍鹰算法优化+创新改进Transformer!NGO-Transformer-LSTM多变量回归预测
算法·lstm·transformer·北方苍鹰算法优化·多变量回归预测·ngo-transformer
yyt_cdeyyds12 分钟前
FIFO和LRU算法实现操作系统中主存管理
算法
daiyang123...34 分钟前
测试岗位应该学什么
数据结构
alphaTao38 分钟前
LeetCode 每日一题 2024/11/18-2024/11/24
算法·leetcode
kitesxian1 小时前
Leetcode448. 找到所有数组中消失的数字(HOT100)+Leetcode139. 单词拆分(HOT100)
数据结构·算法·leetcode
做人不要太理性1 小时前
【C++】深入哈希表核心:从改造到封装,解锁 unordered_set 与 unordered_map 的终极奥义!
c++·哈希算法·散列表·unordered_map·unordered_set
VertexGeek1 小时前
Rust学习(八):异常处理和宏编程:
学习·算法·rust
石小石Orz1 小时前
Three.js + AI:AI 算法生成 3D 萤火虫飞舞效果~
javascript·人工智能·算法
jiao_mrswang2 小时前
leetcode-18-四数之和
算法·leetcode·职场和发展
qystca2 小时前
洛谷 B3637 最长上升子序列 C语言 记忆化搜索->‘正序‘dp
c语言·开发语言·算法