3110.字符串的分数:模拟(注意一个小细节)
【LetMeFly】3110.字符串的分数:模拟(注意一个小细节)
力扣题目链接:https://leetcode.cn/problems/score-of-a-string/
给你一个字符串 s
。一个字符串的 分数 定义为相邻字符 ASCII 码差值绝对值的和。
请你返回 s
的 分数 。
示例 1:
输入:s = "hello"
输出:13
解释:
s
中字符的 ASCII 码分别为:'h' = 104
,'e' = 101
,'l' = 108
,'o' = 111
。所以 s
的分数为 |104 - 101| + |101 - 108| + |108 - 108| + |108 - 111| = 3 + 7 + 0 + 3 = 13
。
示例 2:
输入:s = "zaz"
输出:50
解释:
s
中字符的 ASCII 码分别为:'z' = 122
,'a' = 97
。所以 s
的分数为 |122 - 97| + |97 - 122| = 25 + 25 = 50
。
提示:
2 <= s.length <= 100
s
只包含小写英文字母。
解题方法:模拟
直接从第二个字符开始遍历字符串,将这个字符减去前一个字符的绝对值累加到答案中,最终返回即可。
注意:请谨慎使用8比特数减8比特数(如char - char或byte - byte),因为有的编程语言中8比特数相减不会类型提升转为int相减。
如下代码的运行结果为255和255:
1 |
|
- 时间复杂度$O(len(s))$
- 空间复杂度$O(1)$
AC代码
C++
1 |
|
Python
1 |
|
Java
1 |
|
Go
1 |
|
同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~
千篇源码题解已开源
3110.字符串的分数:模拟(注意一个小细节)
https://blog.letmefly.xyz/2025/03/15/LeetCode 3110.字符串的分数/