当前位置: 首页 > article >正文

3271.哈希分割子串

3271.哈希分割字符串

1、题目描述

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

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

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

  • 一个字符的 哈希值 是它在 字母表 中的下标(也就是 'a' → 0'b' → 1 ,… ,'z' → 25)。
  • 将子字符串中字幕的 哈希值 求和。
  • 将和对 26 取余,将结果记为 hashedChar
  • 找到小写字母表中 hashedChar 对应的字符。
  • 将该字符添加到 result 的末尾。

返回 result

2、代码实现

下面是这个问题的 C++ 代码实现:

class Solution {
public:
    string stringHash(string s, int k) {
        int n = s.size(); // 字符串的长度
        int m = n / k;    // 子字符串的数量
        string ret;       // 存储结果的字符串
        
        for (int i = 0; i < m; i++) {
            int sum = 0;  // 初始化每个子字符串的哈希值总和
            
            // 计算当前子字符串的哈希值
            for (int j = 0; j < k; j++) {
                sum += s[i * k + j] - 'a'; // 获取字符的下标值并求和
            }
            
            sum %= 26; // 对 26 取余
            ret.push_back(sum + 'a'); // 将对应的字符添加到结果中
        }
        
        return ret; // 返回结果字符串
    }
};

3、代码详解

  1. 变量定义
    • n:字符串 s 的长度。
    • m:子字符串的数量,计算方法是 n / k
    • ret:存储最终结果的字符串。
  2. 处理子字符串
    • 外层循环:遍历每个子字符串。
    • 内层循环:遍历当前子字符串的每个字符,计算它们的哈希值总和。
    • 对总和取余 26,得到 hashedChar
    • hashedChar 对应的字符添加到结果字符串 ret 中。
  3. 返回结果:返回生成的哈希结果字符串 ret

总结

这个问题通过简单的字符串处理和数学运算实现了字符串的哈希转换。算法时间复杂度为 O(n),其中 n 是字符串的长度。这种方法高效且易于理解,非常适合用来解决类似的字符串处理问题。


http://www.kler.cn/a/322288.html

相关文章:

  • Unity脚本基础规则
  • #define定义宏(3)
  • 运维面试题.云计算面试题之三ELK
  • leetcode 扫描线专题 06-leetcode.836 rectangle-overlap 力扣.836 矩形重叠
  • 【c++丨STL】list模拟实现(附源码)
  • css数据不固定情况下,循环加不同背景颜色
  • 前端使用vue点击上传文件,传送给后端,后端进行文件接收
  • 区块链—共享块存储安全可信任可追踪分布式数据库系统技术
  • LTE SSS产生过程中z序列的介绍和MATLAB以及C语言实现
  • 7个不为人知的实用软件推荐
  • 关于VSCode里需要用的一些插件总结
  • 19 基于51单片机的倒计时音乐播放系统设计
  • USB 3.1 标准 A 型到 USB 3.1 标准 A 型或 B 型的电缆组件
  • Spring MVC 基础 : 文件、cookies的接收 ,REST响应
  • python命令行怎么换行
  • Python批量处理客户明细表格数据,挖掘更大价值
  • 电脑退域或切换系统账号后系统黑屏
  • C#基于SkiaSharp实现印章管理(8)
  • 这五本大模型书籍,让你从大模型零基础到精通,非常详细收藏我这一篇就够了
  • 【PyTorch】环境配置
  • MySQL 数据转换技巧:列转行与行转列
  • Redis支持数据类型,它们各自的应用场景是
  • 基于以太坊+IPFS的数据交易平台进行效率评估
  • MapReduce学习与理解
  • 14年408-计算机网络
  • 【Kubernetes】常见面试题汇总(三十九)