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:

chatgpt

题目来自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
  • 计算绝对差值:

    1. |h - e| = |104 - 101| = 3
    2. |e - l| = |101 - 108| = 7
    3. |l - l| = |108 - 108| = 0
    4. |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“的更多相关文章

  1. C语言:将ss所指字符串中所有下标为奇数位置的字母转换为大写-将该字符串中的所有字符按ASCII码值升序排序后输出。-将a所指的4*3矩阵第k行的元素与第0行元素交换。

    //函数fun:将ss所指字符串中所有下标为奇数位置的字母转换为大写,若不是字母,则不转换. #include<conio.h> #include<stdio.h> #incl ...

  2. 8、将两个字符串s1,s2进行比较,如果s1>s2,则输出一个正数。如果s1 = s2,输出零。如果s1 < s2, 输出一个负数,不用strcmp函数,输出的正数或者负数的绝对值应该是比较两字符串相应字符的ascii码的差值。

    /* 将两个字符串s1,s2进行比较,如果s1>s2,则输出一个正数.如果s1 = s2,输出零.如果s1 < s2, 输出一个负数,不用strcmp函数,输出的正数或者负数的绝对值应该是 ...

  3. php中的字符串常用函数(四) ord() 获得字符的ascii码 chr()获取ascii码对应的字符

    ord('a');//=>97 返回小写a 的ascii码值97 chr(97);//=>a 返回ascii码表上的97对应的 小写a

  4. js控制文本框只能输入数字 及 常用字符对应ASCII码值

    方法一: <INPUT TYPE='text' NAME=text onkeypress="a()"><script language=javascript> ...

  5. 输入三个字符(可以重复)后,按各字符的ASCII码从小到大的顺序输出这三个字符。

    #include <stdio.h>#include <stdlib.h>int main(int argc, char *argv[]) { int a,b,i,j=0,t; ...

  6. Java 蓝桥杯 算法训练 字符串的展开 (JAVA语言实现)

    ** 算法训练 字符串的展开 ** 题目: 在初赛普及组的"阅读程序写结果"的问题中,我们曾给出一个字符串展开的例子:如果在输入的字符串中,含有类似于"d-h" ...

  7. C# 字符串按 ASCII码 排序,注意其中的小坑

    https://www.cnblogs.com/similar/p/6739293.html 在和银行做数据对接时,涉及到数据传输时的验签及加密.其中数据签名方案中就要求数据项根据属性名按 ASCII ...

  8. C# 参数签名字符串按 ASCII码排序,注意其中的坑

    参数签名中通常是按键值对中键名称的ASCII按从小到大的顺序排序后进行hash为签名字符串.不要直接使用 SortedDictionary<string, string> 有坑的,他是按数 ...

  9. 在论坛中出现的比较难的sql问题:27(字符串拆分、字符串合并、非连续数字的间隔范围、随机返回字符串)

    原文:在论坛中出现的比较难的sql问题:27(字符串拆分.字符串合并.非连续数字的间隔范围.随机返回字符串) 在论坛中看到一个帖子,帖子中有一些sql方面的面试题,我觉得这些面试题很有代表性. 原帖的 ...

  10. C语言:假定输入的字符串只包含字母和*号,fun函数:除了尾部的*号以外,将字符的其他*号进行全部删除,形参p已经指向字符串中最后一个字母。-利用折半查找整数m在有序数组中的位置,若找到,返回下标值,否则返回-1。

    //假定输入的字符串只包含字母和*号,fun函数:除了尾部的*号以外,将字符的其他*号进行全部删除,形参p已经指向字符串中最后一个字母. #include <stdio.h> void f ...

随机推荐

  1. kuboard部署在k8s集群中

    kuboard部署在k8s集群中,yaml配置文件 #cat kuboard.yaml apiVersion: apps/v1 kind: Deployment metadata: labels: a ...

  2. C++ 高效使用智能指针的8个建议

    C++ 高效使用智能指针的8个建议 前言:智能指针是C++11提供的新特性,它基于RAII实现,可以自动管理内存资源,避免内存泄漏的发生,但是智能指针也并不是万能的,如果不正确使用智能指针,也会导致内 ...

  3. LeetCode题集-3 - 无重复字符的最长子串

    题目:给定一个字符串 s ,请你找出其中不含有重复字符的最长子串的长度. 我们先来好好理解题目,示例1中怎么得到长度为3的? 如果以第一个字符a为起始,不含重复的最长子串是abc:则我们这样表示(a) ...

  4. Hash表实践 —— 两数之和

    目录 题目背景 解题思路 题目背景 这个题目用常规的双循环就可以完成. 但不是最优解.为什么? 看看他的步骤数: N =[3,2,4] 求结果为6的两个元素坐标如下, 1). 3+2 = 5 不等于 ...

  5. 【渗透测试】ATT&CK靶场一,phpmyadmin,域渗透,内网横向移动攻略

    前言 VulnStack,作为红日安全团队匠心打造的知识平台,其独特优势在于全面模拟了国内企业的实际业务场景,涵盖了CMS.漏洞管理及域管理等核心要素.这一设计理念源于红日安全团队对ATT&C ...

  6. Java SE 23 新增特性

    Java SE 23 新增特性 作者:Grey 原文地址: 博客园:Java SE 23 新增特性 CSDN:Java SE 23 新增特性 源码 源仓库: Github:java_new_featu ...

  7. 音视频入门-7-ffmpeg小实验-v4l2 ubuntu 获取摄像头图像并进行格式转换

    1. Linux内我们使用V4L2框架获取摄像头数据,由于摄像头的不同,摄像头所输出的数据格式各有不同.    考虑到YUV420P 的格式使用最广泛,我们最终将摄像头数据转为该格式. pic_dat ...

  8. C# 裁剪PDF页面

    在处理PDF文档时,有时需要精确地裁剪页面以适应特定需求,比如去除广告.背景信息或者仅仅是为了简化文档内容.本文将介绍如何使用免费.NET控件通过C#实现裁剪PDF页面. 免费库 Free Spire ...

  9. KubeSphere 社区双周报|2024.09.27-10.10

    KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书.新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列 ...

  10. 云原生周刊:Terraform 1.8 发布 | 2024.5.6

    开源项目推荐 xlskubectl 用于控制 Kubernetes 集群的电子表格.xlskubectl 将 Google Spreadsheet 与 Kubernetes 集成.你可以通过用于跟踪费 ...