代码逻辑说明:
1.头文件与全局变量:
* #include <bits/stdc++.h> 包含了所有标准库,无需单独引入string和iostream
* 全局变量string s用于存储输入字符串,int c[128]用于统计字符出现次数(默认初始化为 0)
2.核心流程:
* 读取输入字符串到s中
* 遍历字符串每个字符:c[s[i]]++,利用字符 ASCII 码作为数组下标,统计每个字符出现次数(例如'a'的 ASCII 码是 97,c[97]就记录'a'的出现次数)
* 计算总价值:遍历计数数组c,对每个出现过的字符(c[i]>0),累加次数×ASCII码值(即c[i] * i),结果存放在long long t中(避免大数值溢出)
* 输出总价值t
3.为什么适合该题目
时间复杂度为O(n)(n为字符串长度),高效处理10610^6106级别的输入
空间复杂度O(1)(数组大小固定为 128),占用内存少
直接利用字符 ASCII 码特性统计,逻辑简洁,计算准确
例如输入aaabb时:
c[97]会被统计为 3('a' 出现 3 次)
c[98]会被统计为 2('b' 出现 2 次)
总价值计算为3*97 + 2*98 = 291 + 196 = 487,与样例结果一致
代码完全满足题目需求,且简洁高效。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
!感谢豆包的支持!