2024-11-27:字符串的分数。用go语言,给定一个字符串 s,我们可以定义其“分数”为相邻字符的 ASCII 码差值绝对值的总和。 请计算并返回字符串 s 的分数。 输入:s = “hello“
2024-11-27:字符串的分数。用go语言,给定一个字符串 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 。
答案2024-11-27:
题目来自leetcode3110。
大体步骤如下:
1.输入处理:
- 我们接收到一个字符串 ( s ),例如输入示例中提供的
"hello"。
2.初始化分数:
- 初始化一个计数器,用于存储分数。这个计数器
ans的初始值为 0。
3 遍历字符串:
3.1.使用一个循环,从字符串的第二个字符(即索引1)开始遍历到字符串的最后一个字符:
3.1.1.for i := 1; i < len(s); i++:循环的索引 i 从 1 开始,直到 ( s ) 的长度减 1(即最后一个字符的索引)。
4 计算 ASCII 差值:
4.1.在每次循环中,计算相邻两个字符的 ASCII 码差值的绝对值:
4.1.1.取出当前字符(s[i])和前一个字符(s[i-1]),将这两个字符转换为整数(它们的 ASCII 码值),然后计算它们之间的差值:
4.1.1.abs(int(s[i-1]) - int(s[i])):这里 abs 是一个辅助函数,用于计算一个整数的绝对值。
4.1.2.将计算得到的绝对值累加到 ans 中。
5.返回结果:
- 当循环完成后,
ans中存储的值就是字符串的分数。使用return返回该值。
示例计算:
以字符串 s = "hello" 为例:
ASCII 码:
- 'h' = 104
- 'e' = 101
- 'l' = 108
- 'l' = 108
- 'o' = 111
计算绝对差值:
- |h - e| = |104 - 101| = 3
- |e - l| = |101 - 108| = 7
- |l - l| = |108 - 108| = 0
- |l - o| = |108 - 111| = 3
累加结果:
3 + 7 + 0 + 3 = 13
时间复杂度:
- 时间复杂度:O(n)。在最坏情况下,需要遍历整个字符串一次,其中 ( n ) 是字符串的长度。因此,时间复杂度是线性的,O(n)。
空间复杂度:
- 额外空间复杂度:O(1)。在计算过程中,只使用了一个整数变量
ans来存储结果,不需要使用其他额外的数据结构,因此额外空间复杂度是常数,即 O(1)。
综上所述,所述算法的时间复杂度为 O(n),而空间复杂度为 O(1)。
Go完整代码如下:
package main
import (
"fmt"
)
func scoreOfString(s string) (ans int) {
for i := 1; i < len(s); i++ {
ans += abs(int(s[i-1]) - int(s[i]))
}
return
}
func abs(x int) int {
if x < 0 {
return -x
}
return x
}
func main() {
s := "hello"
fmt.Println(scoreOfString(s))
}

Rust完整代码如下:
fn score_of_string(s: &str) -> i32 {
let mut ans = 0;
for i in 1..s.len() {
let prev_char = s.chars().nth(i - 1).unwrap();
let curr_char = s.chars().nth(i).unwrap();
ans += (prev_char as i32 - curr_char as i32).abs();
}
ans
}
fn main() {
let s = "hello";
println!("{}", score_of_string(s));
}

2024-11-27:字符串的分数。用go语言,给定一个字符串 s,我们可以定义其“分数”为相邻字符的 ASCII 码差值绝对值的总和。 请计算并返回字符串 s 的分数。 输入:s = “hello“的更多相关文章
- C语言:将ss所指字符串中所有下标为奇数位置的字母转换为大写-将该字符串中的所有字符按ASCII码值升序排序后输出。-将a所指的4*3矩阵第k行的元素与第0行元素交换。
//函数fun:将ss所指字符串中所有下标为奇数位置的字母转换为大写,若不是字母,则不转换. #include<conio.h> #include<stdio.h> #incl ...
- 8、将两个字符串s1,s2进行比较,如果s1>s2,则输出一个正数。如果s1 = s2,输出零。如果s1 < s2, 输出一个负数,不用strcmp函数,输出的正数或者负数的绝对值应该是比较两字符串相应字符的ascii码的差值。
/* 将两个字符串s1,s2进行比较,如果s1>s2,则输出一个正数.如果s1 = s2,输出零.如果s1 < s2, 输出一个负数,不用strcmp函数,输出的正数或者负数的绝对值应该是 ...
- php中的字符串常用函数(四) ord() 获得字符的ascii码 chr()获取ascii码对应的字符
ord('a');//=>97 返回小写a 的ascii码值97 chr(97);//=>a 返回ascii码表上的97对应的 小写a
- js控制文本框只能输入数字 及 常用字符对应ASCII码值
方法一: <INPUT TYPE='text' NAME=text onkeypress="a()"><script language=javascript> ...
- 输入三个字符(可以重复)后,按各字符的ASCII码从小到大的顺序输出这三个字符。
#include <stdio.h>#include <stdlib.h>int main(int argc, char *argv[]) { int a,b,i,j=0,t; ...
- Java 蓝桥杯 算法训练 字符串的展开 (JAVA语言实现)
** 算法训练 字符串的展开 ** 题目: 在初赛普及组的"阅读程序写结果"的问题中,我们曾给出一个字符串展开的例子:如果在输入的字符串中,含有类似于"d-h" ...
- C# 字符串按 ASCII码 排序,注意其中的小坑
https://www.cnblogs.com/similar/p/6739293.html 在和银行做数据对接时,涉及到数据传输时的验签及加密.其中数据签名方案中就要求数据项根据属性名按 ASCII ...
- C# 参数签名字符串按 ASCII码排序,注意其中的坑
参数签名中通常是按键值对中键名称的ASCII按从小到大的顺序排序后进行hash为签名字符串.不要直接使用 SortedDictionary<string, string> 有坑的,他是按数 ...
- 在论坛中出现的比较难的sql问题:27(字符串拆分、字符串合并、非连续数字的间隔范围、随机返回字符串)
原文:在论坛中出现的比较难的sql问题:27(字符串拆分.字符串合并.非连续数字的间隔范围.随机返回字符串) 在论坛中看到一个帖子,帖子中有一些sql方面的面试题,我觉得这些面试题很有代表性. 原帖的 ...
- C语言:假定输入的字符串只包含字母和*号,fun函数:除了尾部的*号以外,将字符的其他*号进行全部删除,形参p已经指向字符串中最后一个字母。-利用折半查找整数m在有序数组中的位置,若找到,返回下标值,否则返回-1。
//假定输入的字符串只包含字母和*号,fun函数:除了尾部的*号以外,将字符的其他*号进行全部删除,形参p已经指向字符串中最后一个字母. #include <stdio.h> void f ...
随机推荐
- kuboard部署在k8s集群中
kuboard部署在k8s集群中,yaml配置文件 #cat kuboard.yaml apiVersion: apps/v1 kind: Deployment metadata: labels: a ...
- C++ 高效使用智能指针的8个建议
C++ 高效使用智能指针的8个建议 前言:智能指针是C++11提供的新特性,它基于RAII实现,可以自动管理内存资源,避免内存泄漏的发生,但是智能指针也并不是万能的,如果不正确使用智能指针,也会导致内 ...
- LeetCode题集-3 - 无重复字符的最长子串
题目:给定一个字符串 s ,请你找出其中不含有重复字符的最长子串的长度. 我们先来好好理解题目,示例1中怎么得到长度为3的? 如果以第一个字符a为起始,不含重复的最长子串是abc:则我们这样表示(a) ...
- Hash表实践 —— 两数之和
目录 题目背景 解题思路 题目背景 这个题目用常规的双循环就可以完成. 但不是最优解.为什么? 看看他的步骤数: N =[3,2,4] 求结果为6的两个元素坐标如下, 1). 3+2 = 5 不等于 ...
- 【渗透测试】ATT&CK靶场一,phpmyadmin,域渗透,内网横向移动攻略
前言 VulnStack,作为红日安全团队匠心打造的知识平台,其独特优势在于全面模拟了国内企业的实际业务场景,涵盖了CMS.漏洞管理及域管理等核心要素.这一设计理念源于红日安全团队对ATT&C ...
- Java SE 23 新增特性
Java SE 23 新增特性 作者:Grey 原文地址: 博客园:Java SE 23 新增特性 CSDN:Java SE 23 新增特性 源码 源仓库: Github:java_new_featu ...
- 音视频入门-7-ffmpeg小实验-v4l2 ubuntu 获取摄像头图像并进行格式转换
1. Linux内我们使用V4L2框架获取摄像头数据,由于摄像头的不同,摄像头所输出的数据格式各有不同. 考虑到YUV420P 的格式使用最广泛,我们最终将摄像头数据转为该格式. pic_dat ...
- C# 裁剪PDF页面
在处理PDF文档时,有时需要精确地裁剪页面以适应特定需求,比如去除广告.背景信息或者仅仅是为了简化文档内容.本文将介绍如何使用免费.NET控件通过C#实现裁剪PDF页面. 免费库 Free Spire ...
- KubeSphere 社区双周报|2024.09.27-10.10
KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书.新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列 ...
- 云原生周刊:Terraform 1.8 发布 | 2024.5.6
开源项目推荐 xlskubectl 用于控制 Kubernetes 集群的电子表格.xlskubectl 将 Google Spreadsheet 与 Kubernetes 集成.你可以通过用于跟踪费 ...