题目描述
给你一个字符串 s
。一个字符串的 分数 定义为相邻字符 ASCII 码差值绝对值的和。
请你返回 s
的 分数。
样例
输入: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。
输入:s = "zaz"
输出:50
解释:
s 中字符的 ASCII 码分别为:'z' = 122,'a' = 97。
所以 s 的分数为 |122 - 97| + |97 - 122| = 25 + 25 = 50。
限制
2 <= s.length <= 100
s
只包含小写英文字母。
算法
(模拟) $O(n)$
- 遍历字符串,按题目描述计算答案。
时间复杂度
- 遍历字符串一次,时间复杂度为 $O(n)$。
空间复杂度
- 仅需要常数的额外空间。
C++ 代码
class Solution {
public:
int scoreOfString(string s) {
const int n = s.size();
int ans = 0;
for (int i = 0; i < n - 1; i++)
ans += abs(s[i] - s[i + 1]);
return ans;
}
};