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. LaTex “too many unprocessed floats”

    latex编辑时出现LaTex "too many unprocessed floats" 如何解决? 有人说是用/usepackage[section] {placeins} 我 ...

  2. DOM – Dimension & Coordinate (offset, client, computed, rect)

    前言 很多年前有记入过一篇 box-sizing 和 dom width. 想想也挺可悲的, 那年我是负责后端的, 却要帮着前端去学习这些知识来解决问题... 也好, 现在 full stack, 也 ...

  3. JavaScript – 单线程 与 执行机制 (event loop)

    前言 因为在写 RxJS 系列,有一篇要介绍 Scheduler.它需要对 JS 执行机制有点了解,于是就有了这里篇. 参考 知乎 – 详解JavaScript中的Event Loop(事件循环)机制 ...

  4. JavaScript – CommonJS

    前言 既然写了 JavaScript – ES Module, 也就顺便些 CommonJS 呗, 建议先看 ES Module 那篇. 参考 Youtube – Require vs Import ...

  5. Windbg常用命令及分析套路

    自己也在使用windbg分析问题,但是属于刚入门所以转发下大神的总结:https://www.cnblogs.com/fj365/p/13295453.html 常用 !threadpool 查看线程 ...

  6. 5G网络架构的演进趋势

    5G网络架构的演进趋势 概述 5G移动通信网络系统包括5GC(5G Core Network,5G核心网)和NG-RAN(Next Generation Radio Access Network,5G ...

  7. Vue Cli 创建项目在 GitHub 部署 history 路由模式

    1.修改打包路径 在 vue.config.js 中添加  publicPath  配置,其中 teambition-vue 是你项目的 github 名字.否则会找不到资源. module.expo ...

  8. ftrace options 中的irq-info

    /sys/kernel/debug/tracing/options/irq_info 是 ftrace 中的一个选项,用于启用或禁用有关中断的详细信息的跟踪. options/irq_info 的具体 ...

  9. 在 Vue 实例中编写生命周期hook 或者其它 option/propertie 时,为什么不适用箭头函数 ?

    首先,箭头函数没有自己的 this 环境变量 会沿用作用域使用父级this : 由Vue 管理的函数 ,如果写成箭头函数 this 就不在是 Vue 实例 了 :

  10. kubernetes的Deployment

    Deployment 在我们发布容器中的服务时,总共有一下几种方式: 将旧的pod停掉,创建新的pod并发布 创建新的pod,然后将旧的pod停掉 滚动式升级.创建一个新的pod,删除一个旧的pod, ...