
2025-09-22:字符串的反转度。用go语言,给一个仅包含小写字母的字符串 s。先按字母表的反向给每个字母分配一个数值:a 对应 26,b 对应 25,…,z 对应 1。字符串中第 i(从1开始计数)个字符的“贡献值”就是该字符的反向数值乘以 i。把所有字符的贡献值相加,得到的总和就是需要返回的结果。
可用的计算公式(用字符的 ASCII 码表示):
对于第 i 个字符 c,其反向数值为 122 - ord(c) + 1 = 123 - ord(c);整个字符串的值为
sum_{i=1..n} i * (123 - ord(s[i]))。
1 <= s.length <= 1000。
s 仅包含小写字母。
输入: s = "abc"。
输出: 148。
解释:
字母 | 反转字母表中的位置 | 字符串中的位置 | 乘积 |
|---|---|---|---|
'a' | 26 | 1 | 26 |
'b' | 25 | 2 | 50 |
'c' | 24 | 3 | 72 |
反转度是 26 + 50 + 72 = 148 。
题目来自力扣3498。
根据题目描述和代码,计算字符串反转度的过程如下:
ans(在Go代码中作为命名返回值初始化为0),用于累加所有字符的贡献值。s中的每个字符,按照它们在字符串中出现的顺序进行处理(从左到右)。每个字符的位置索引i从0开始(因为编程语言中字符串索引通常从0开始),但在计算时需要转换为从1开始的位置编号。c,根据题目定义,它在反向字母表中的数值计算为:123 - ord(c)(其中ord(c)表示字符c的ASCII码值)。i的字符(在代码中循环索引从0开始),其位置编号为i+1。ans中。ans作为字符串的反转度。s的长度。因为需要遍历字符串中的每个字符一次,每个字符的处理(计算反向数值和贡献值)是常数时间操作。.
package main
import (
"fmt"
)
func reverseDegree(s string) (ans int) {
for i, c := range s {
ans += int('{'-c) * (i + 1) // 下标从 1 开始
}
return
}
func main() {
s := "abc"
result := reverseDegree(s)
fmt.Println(result)
}

.
# -*-coding:utf-8-*-
def reverse_degree(s):
ans = 0
for i, c in enumerate(s):
# 使用ord获取字符的Unicode码点,下标从1开始所以i+1
ans += (ord('{') - ord(c)) * (i + 1)
return ans
def main():
s = "abc"
result = reverse_degree(s)
print(result)
if __name__ == "__main__":
main()
我们相信Go语言和算法为普通开发者提供了困境的“面试利器”,并致力于分享全面的编程知识。在这里,您可以找到最新的Go语言教程、算法解析、提升面试竞争力的秘籍以及行业动态。 欢迎关注“福大大架构师每日一题”,发消息可获得面试资料,让 Go 语言和算法助力您的职业发展