2024-10-02:用go语言,你可以通过遍历字符串s,找到以字符c开头和结尾的非空子字符串,然后统计它们的数量即可。 输入:

举报
福大大架构师每日一题 发表于 2024/10/02 19:32:48 2024/10/02
【摘要】 2024-10-02:用go语言,你可以通过遍历字符串s,找到以字符c开头和结尾的非空子字符串,然后统计它们的数量即可。输入:s = “abada”, c = “a”。输出:6。解释:以 “a” 开头和结尾的子字符串有: “abada”、“abada”、“abada”、“abada”、“abada”、“abada”。答案2024-10-02:chatgpt题目来自leetcode3084。 ...

2024-10-02:用go语言,你可以通过遍历字符串s,找到以字符c开头和结尾的非空子字符串,然后统计它们的数量即可。

输入:s = “abada”, c = “a”。

输出:6。

解释:以 “a” 开头和结尾的子字符串有: “abada”、“abada”、“abada”、“abada”、“abada”、“abada”。

答案2024-10-02:

chatgpt

题目来自leetcode3084。

大体步骤如下:

1.创建一个函数 countSubstrings(s string, c byte) int64 用于统计字符串 s 中以字符 c 开头和结尾的非空子字符串的数量。

2.在 countSubstrings 函数中,首先使用 strings.Count(s, string(c)) 统计字符串 s 中字符 c 的出现次数,并将结果存储在变量 k 中。

3.然后计算以字符 c 开头和结尾的非空子字符串的数量。这可以通过数学公式计算得出,即首先用 k 乘以 k+1,再除以 2。

4.在 main 函数中,定义字符串 s = "abada" 和字符 c = 'a',然后调用 countSubstrings(s, c) 函数,并输出结果。

5.对于输入示例 s = "abada", c = 'a',程序会统计以字符 ‘a’ 开头和结尾的非空子字符串的数量,即 “abada”、“abada”、“abada”、“abada”、“abada”、“abada”。

6.整体时间复杂度取决于 strings.Count() 函数的时间复杂度以及乘法和加法运算的时间复杂度,通常可以视为 O(n),其中 n 为字符串的长度。额外空间复杂度为 O(1)。

Go完整代码如下:

package main

import (
	"fmt"
	"strings"
)

func countSubstrings(s string, c byte) int64 {
	k := int64(strings.Count(s, string(c)))
	return k * (k + 1) / 2
}
func main() {
	s := "abada"
	c := byte('a')
	fmt.Println(countSubstrings(s, c))
}

在这里插入图片描述

Rust完整代码如下:

fn count_substrings(s: &str, c: char) -> i64 {
    let k = s.chars().filter(|&ch| ch == c).count() as i64;
    k * (k + 1) / 2
}

fn main() {
    let s = "abada";
    let c = 'a';
    println!("{}", count_substrings(s, c));
}

在这里插入图片描述

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。