Easy
题目描述
给定一个字符串 s,计算它的反向度数。
反向度数的计算方式如下:
- 对于每个字符,将其在反向字母表中的位置(‘a’ = 26, ‘b’ = 25, …, ‘z’ = 1)乘以它在字符串中的位置(从 1 开始索引)。
- 将字符串中所有字符的乘积相加。
返回 s 的反向度数。
示例 1:
输入:s = "abc"
输出:148
解释:
| 字母 | 反向字母表索引 | 字符串索引 | 乘积 |
|------|----------------|------------|------|
| 'a' | 26 | 1 | 26 |
| 'b' | 25 | 2 | 50 |
| 'c' | 24 | 3 | 72 |
反向度数为 26 + 50 + 72 = 148。
示例 2:
输入:s = "zaza"
输出:160
解释:
| 字母 | 反向字母表索引 | 字符串索引 | 乘积 |
|------|----------------|------------|------|
| 'z' | 1 | 1 | 1 |
| 'a' | 26 | 2 | 52 |
| 'z' | 1 | 3 | 3 |
| 'a' | 26 | 4 | 104 |
反向度数为 1 + 52 + 3 + 104 = 160。
约束条件:
1 <= s.length <= 1000s仅包含小写英文字母。
解题思路
解题思路
这道题是一个简单的字符串模拟题,核心是理解反向字母表的概念和计算规则。
算法步骤:
理解反向字母表映射:在反向字母表中,‘a’ 对应 26,‘b’ 对应 25,…,‘z’ 对应 1。对于任意字符
c,其反向字母表值为27 - (c - 'a'),即'z' - c + 1。遍历字符串:对字符串中的每个字符,计算其在反向字母表中的值乘以其在字符串中的位置(1-indexed)。
累加结果:将所有乘积相加得到最终的反向度数。
实现细节:
- 字符串索引从 1 开始计算(题目要求)
- 字符到反向字母表值的转换公式:
27 - (s[i] - 'a') - 时间复杂度为 O(n),空间复杂度为 O(1)
这是一道直接按题意模拟即可的题目,没有复杂的算法技巧,重点是正确理解题意和实现细节。
代码实现
class Solution {
public:
int reverseDegree(string s) {
int result = 0;
for (int i = 0; i < s.length(); i++) {
int reverseAlphabetValue = 27 - (s[i] - 'a');
int stringPosition = i + 1;
result += reverseAlphabetValue * stringPosition;
}
return result;
}
};
class Solution:
def reverseDegree(self, s: str) -> int:
result = 0
for i, char in enumerate(s):
reverse_alphabet_value = 27 - (ord(char) - ord('a'))
string_position = i + 1
result += reverse_alphabet_value * string_position
return result
public class Solution {
public int ReverseDegree(string s) {
int result = 0;
for (int i = 0; i < s.Length; i++) {
int reverseAlphabetValue = 27 - (s[i] - 'a');
int stringPosition = i + 1;
result += reverseAlphabetValue * stringPosition;
}
return result;
}
}
var reverseDegree = function(s) {
let result = 0;
for (let i = 0; i < s.length; i++) {
const reverseAlphabetValue = 27 - (s.charCodeAt(i) - 'a'.charCodeAt(0));
const stringPosition = i + 1;
result += reverseAlphabetValue * stringPosition;
}
return result;
};
复杂度分析
| 复杂度类型 | 分析 |
|---|---|
| 时间复杂度 | O(n),其中 n 是字符串的长度,需要遍历字符串一次 |
| 空间复杂度 | O(1),只使用了常数级别的额外空间 |