字符串转化为int类型的用法汇总

news/2024/11/22 21:49:32/

在处理字符串相关的问题时,字符转换为整数后通常被用作数组或哈希表的下标,可以方便地记录字符的频率或查询字符的映射关系。以下是几个C++中字符转化为整数的应用例子:

  • 计算字符串的哈希值:字符到整数的转换可以用于计算字符串的总体哈希值,这对于字符串的快速查找或比较非常有用。
int simple_hash(string s) {int hash_value = 0;for (char c : s) {hash_value += static_cast<int>(c);}return hash_value;
}
  • 实现字母表的加密和解密:字符到整数的转换也可以用于字母表的加密和解密,比如凯撒密码就是一种通过移动字母表位置实现加密和解密的方法。
string caesar_cipher(string s, int shift) {string result = "";for (char c : s) {char shifted_c = (c - 'a' + shift) % 26 + 'a';result += shifted_c;}return result;
}
  • 记录字符频率字符到整数的转换可以用于构建字符的频率表。这在处理字符串问题时是非常常见的技巧。
vector<int> frequency_table(string s) {vector<int> freq_table(26, 0);for (char c : s) {freq_table[c - 'a']++;}return freq_table;
}

static_cast<int>(c)的用法与限制

在C++中,可以使用static_cast<int>(c)来将字符c直接转换为其对应的ASCII码值。如果c是数字字符’2’,那么static_cast<int>(c)返回字符’2’的ASCII码值,也就是50

例如:

int simple_hash(string s) {int hash_value = 0;for (char c : s) {hash_value += static_cast<int>(c);}return hash_value;
}

然而,如果想得到数字字符’2’对应的整数2(而不是ASCII码值50),那么必须使用c - '0'这样的操作。这是因为数字字符’0’到’9’的ASCII码值是连续的,且**'0’的ASCII码值是48,'1’是49,'2’是50**,以此类推。因此,c - '0'可以得到数字字符对应的整数值。

static_cast<int>(c)c - '0'都可以将字符转换为整数,但它们得到的结果是不同的。

相关题目:

6465.执行子串操作后的字典序最小字符串

242.有效字母异位词 (频率表)

17.电话号码的字母组合


http://www.ppmy.cn/news/534674.html

相关文章

38岁女强人转行做足疗店,只用一年就把两家同行都挤垮了?

琴姐今年38岁&#xff0c;至今未婚&#xff0c;一个人经营着一家足疗店。很多人都说&#xff0c;像琴姐这个年纪&#xff0c;不结婚就算了&#xff0c;连个孩子都没有&#xff0c;以后的生活肯定会过得很苦。然而在我看来&#xff0c;生活苦不苦其实和结婚或者是生孩子都没有关…

PHP 面试总结(持续更新) --小丑

Session与cookie的区别&#xff1f; cookie数据存放在客户的浏览器上&#xff0c;session数据放在服务器上&#xff0c;以文件的形式存放&#xff0c;可以从php.ini里面的session.save_path找到存放位置 cookie不是很安全 &#xff0c;cookie可以进行cookie欺骗&#xff0c;别人…

谁见过还要刷卡的洗脚盆!

前几天朋友一起聚会&#xff0c;送了一个脚盆给我&#xff0c;功能倒是挺多&#xff0c;用起来也很舒服&#xff0c;就是一点&#xff0c;每用一次就要刷一次卡&#xff0c;每次扣费好几百&#xff01; &#xff0c;现在的套路都这么深吗

【Python入门】Python循环语句(for循环的嵌套应用)

前言 &#x1f4d5;作者简介&#xff1a;热爱跑步的恒川&#xff0c;致力于C/C、Java、Python等多编程语言&#xff0c;热爱跑步&#xff0c;喜爱音乐的一位博主。 &#x1f4d7;本文收录于Python零基础入门系列&#xff0c;本专栏主要内容为Python基础语法、判断、循环语句、函…

Redis进阶 - Redis持久化

原文首更地址&#xff0c;阅读效果更佳&#xff01; Redis进阶 - Redis持久化 | CoderMast编程桅杆https://www.codermast.com/database/redis/redis-advance-persistence.html 单点Redis的问题 数据丢失问题&#xff1a;Redis 是内存存储&#xff0c;服务重启可能会丢失数据。…

ffmpeg命令参数

主要参数 -i 设定输入流 -f 设定输出格式&#xff08;format&#xff09; -ss 开始时间 -t 时间长度视频参数 -vframes 设置要输出的视频帧数 -b 设定视频码率 -b:v 视频码率 -r 设定帧率 -s 设定画面的宽与高 -vn 不处理视频 -aspect aspect 设置横纵比4:3 或16:9 或1.333或…

【C++】通讯录的基本实现,附有源码分享

目录 1、运行环境 2、系统实现功能 2.1菜单功能 2.2退出通讯录功能 2.3添加联系人功能 2.4显示联系人功能 2.5删除联系人功能 2.6查找联系人功能 2.7修改联系人功能 2.8清空联系人功能 2.9动态扩容功能 2.10选择优化功能 2.11文件操作 3、源码分享 1、运行环境 …

File 类,InputStream, OutputStream 的用法

目录 一.File类 关于名字和路径的操作 关于创建和销毁的操作 创建文件夹(多级目录) InputStream 第一种:字节流读取 第二种: 字符流读取(Reader) OutputStream 第一种:字节流写入 第二种方式:字符流输入 一.File类 File翻译过来"文件" 那么File类的操作实际…