首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >2024-10-02:用go语言,你可以通过遍历字符串s,找到以字符c开头和结尾的非空子字符串,然后统计它们的数量即可。 输入:

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

作者头像
福大大架构师每日一题
发布2024-10-08 10:29:18
发布2024-10-08 10:29:18
5380
举报

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完整代码如下:

代码语言:javascript
复制
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完整代码如下:

代码语言:javascript
复制
fn count_substrings(s:&str, c:char)->i64{
letk= s.chars().filter(|&ch| ch == c).count()asi64;
    k *(k +1)/2
}

fnmain(){
lets="abada";
letc='a';
println!("{}",count_substrings(s, c));
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-10-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 福大大架构师每日一题 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 大体步骤如下:
  • Go完整代码如下:
  • Rust完整代码如下:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档