Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >2024-09-28:用go语言,给定一个字符串s,要求判断是否存在一个长度为2的子字符串, 在其反转后的字符串中也存在相同的子

2024-09-28:用go语言,给定一个字符串s,要求判断是否存在一个长度为2的子字符串, 在其反转后的字符串中也存在相同的子

作者头像
福大大架构师每日一题
发布于 2024-09-29 03:03:05
发布于 2024-09-29 03:03:05
27700
代码可运行
举报
运行总次数:0
代码可运行

2024-09-28:用go语言,给定一个字符串s,要求判断是否存在一个长度为2的子字符串,

在其反转后的字符串中也存在相同的子字符串。

如果存在这样的子字符串,则返回true;

如果不存在,则返回false。

输入:s = "leetcode"。

输出:true。

解释:子字符串 "ee" 的长度为 2,它也出现在 reverse(s) == "edocteel" 中。

答案2024-09-28:

chatgpt

题目来自leetcode3083。

大体步骤如下:

1.我们在主函数main中首先初始化字符串s为"leetcode",然后调用isSubstringPresent来检查是否存在符合条件的子字符串。

2.在isSubstringPresent函数中,我们定义了一个长度为26的数组vis来表示字母的出现情况。我们遍历字符串s,逐个检查相邻的字符对(s[i-1], s[i]), 并将它们转换为对应的数组下标,用位运算来标记存在相同子字符串的情况。如果发现有某个字符已经标记过和当前字符组成的子字符串,那么就返回true。

3.最后,如果遍历完整个字符串后没有发现符合条件的子字符串,那么就返回false。

总的时间复杂度:

  • • 遍历整个字符串s需要O(n)时间,其中n为字符串s的长度。
  • • 每个字符的操作都是常数时间的。
  • • 所以总的时间复杂度为O(n)。

总的额外空间复杂度:

  • • 数组vis的大小是固定的,长度为26,所以空间复杂度为O(1)。

通过这种实现,我们可以在线性时间复杂度内解决该问题,并且使用的额外空间非常有限。

Go完整代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package main

import(
"fmt"
)

func isSubstringPresent(s string)bool{
    vis :=[26]int{}
for i :=1; i <len(s); i++{
        x, y := s[i-1]-'a', s[i]-'a'
        vis[x]|=1<< y
if vis[y]>>x&1>0{
returntrue
}
}
returnfalse
}
func main(){
    s:="leetcode"
    fmt.Println(isSubstringPresent(s))
}

Rust完整代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fn is_substring_present(s:&str)->bool{
letmut vis=[0;26];
foriin1..s.len(){
letx= s.as_bytes()[i -1]asusize-'a'asusize;
lety= s.as_bytes()[i]asusize-'a'asusize;
        vis[x]|=1<< y;
if vis[y]>> x &1>0{
returntrue;
}
}
false
}

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
2024-12-15:同位字符串连接的最小长度。用go语言,给定一个字符串s,由字符串t和t的多个同位字符串连接而成。 要求计算
2024-12-15:同位字符串连接的最小长度。用go语言,给定一个字符串s,由字符串t和t的多个同位字符串连接而成。
福大大架构师每日一题
2024/12/19
1850
2024-12-15:同位字符串连接的最小长度。用go语言,给定一个字符串s,由字符串t和t的多个同位字符串连接而成。 要求计算
2025-05-24:字符串转换后的长度Ⅰ。用go语言,给定一个字符串 s 和一个整数 t,表示需要进行的转换次数。每次转换中,
2025-05-24:字符串转换后的长度Ⅰ。用go语言,给定一个字符串 s 和一个整数 t,表示需要进行的转换次数。每次转换中,对字符串中每个字符进行如下替换规则:
福大大架构师每日一题
2025/05/25
610
2025-05-24:字符串转换后的长度Ⅰ。用go语言,给定一个字符串 s 和一个整数 t,表示需要进行的转换次数。每次转换中,
2024-10-16:用go语言,找出一个字符串中每个字符最多出现两次的最长子串,并返回该子串的最大长度。 输入: s = “b
2024-10-16:用go语言,找出一个字符串中每个字符最多出现两次的最长子串,并返回该子串的最大长度。
福大大架构师每日一题
2024/10/21
1820
2024-10-16:用go语言,找出一个字符串中每个字符最多出现两次的最长子串,并返回该子串的最大长度。 输入: s = “b
2024-10-08:用go语言,给定一个字符串 word 和一个整数 k,判断是否可以通过删除最少数量的字符使得该字符串成为
2024-10-08:用go语言,给定一个字符串 word 和一个整数 k,判断是否可以通过删除最少数量的字符使得该字符串成为 k 特殊字符串。
福大大架构师每日一题
2024/10/10
1420
2024-10-08:用go语言,给定一个字符串 word 和一个整数 k,判断是否可以通过删除最少数量的字符使得该字符串成为
2024-12-19:分割字符频率相等的最少子字符串
2024-12-19:分割字符频率相等的最少子字符串。用go语言,给定一个字符串 s,你需要将其分割成一个或多个“平衡”子字符串。所谓“平衡”字符串是指其中所有字符出现的次数相同。例如,对于 s = "ababcc",你可以得到多个合法的分割方式,如 ("abab", "c", "c")、("ab", "abc", "c") 和 ("ababcc")。然而,像 ("a", "bab", "cc")、("aba", "bc", "c") 和 ("ab", "abcc") 这样的分割则是不合法的。请你返回将 s 最少分割成多少个平衡子字符串。
福大大架构师每日一题
2024/12/19
1010
2024-12-19:分割字符频率相等的最少子字符串
2024-09-21:用go语言,给定一个字符串 s,字符串中的每个字符要么是小写字母,要么是问号‘?‘。对于一个仅包含小写字母
2024-09-21:用go语言,给定一个字符串 s,字符串中的每个字符要么是小写字母,要么是问号'?'。对于一个仅包含小写字母的字符串t,我们定义cost(i)为在t的前i个字符中与t[i]相同的字符的出现次数。字符串 t 的分数是所有位置i的cost(i)之和。现在的任务是用小写字母替换所有的问号'?',使得字符串s的分数最小。如果有多个替换方案使得分数最小,那么返回字典序最小的一个。输入:s = "???"。输出:"abc"。解释:这个例子中,我们将 s 中的问号 '?' 替换得到 "abc" 。对于字符串 "abc" ,cost(0) = 0 ,cost(1) = 0 和 cost(2) = 0 。"abc" 的分数为 0 。其他修改 s 得到分数 0 的字符串为 "cba" ,"abz" 和 "hey" 。这些字符串中,我们返回字典序最小的。
福大大架构师每日一题
2024/09/23
1640
2024-09-21:用go语言,给定一个字符串 s,字符串中的每个字符要么是小写字母,要么是问号‘?‘。对于一个仅包含小写字母
2025-05-16:字符至少出现 K 次的子字符串Ⅰ。用go语言,给定一个字符串 s 和一个整数 k,要求统计 s 中所有子字
2025-05-16:字符至少出现 K 次的子字符串Ⅰ。用go语言,给定一个字符串 s 和一个整数 k,要求统计 s 中所有子字符串里,至少有某个字符出现的次数不少于 k 的子字符串数量。子字符串指的是 s 中连续且非空的一段字符。
福大大架构师每日一题
2025/05/17
840
2025-05-16:字符至少出现 K 次的子字符串Ⅰ。用go语言,给定一个字符串 s 和一个整数 k,要求统计 s 中所有子字
2025-01-02:压缩字符串Ⅲ。用go语言,给定一个字符串 word,请按照以下算法进行压缩: 1.从一个空字符串 comp
2025-01-02:压缩字符串Ⅲ。用go语言,给定一个字符串 word,请按照以下算法进行压缩:
福大大架构师每日一题
2025/01/07
1270
2025-01-02:压缩字符串Ⅲ。用go语言,给定一个字符串 word,请按照以下算法进行压缩: 1.从一个空字符串 comp
2025-07-03:使字符频率相等的最少操作次数。用go语言,给定一个字符串 s。 如果某个字符串 t 中所有字符的出现次数相
2025-07-03:使字符频率相等的最少操作次数。用go语言,给定一个字符串 s。
福大大架构师每日一题
2025/07/03
830
2025-07-03:使字符频率相等的最少操作次数。用go语言,给定一个字符串 s。 如果某个字符串 t 中所有字符的出现次数相
2025-04-27:统计重新排列后包含另一个字符串的子字符串数目Ⅱ。用go语言,给定两个字符串 word1 和 word2,
2025-04-27:统计重新排列后包含另一个字符串的子字符串数目Ⅱ。用go语言,给定两个字符串 word1 和 word2,
福大大架构师每日一题
2025/04/27
770
2025-04-27:统计重新排列后包含另一个字符串的子字符串数目Ⅱ。用go语言,给定两个字符串 word1 和 word2,
2025-05-01:第一个几乎相等子字符串的下标。用go语言,给定两个字符串 s 和 pattern。 如果字符串 x 修改
2025-05-01:第一个几乎相等子字符串的下标。用go语言,给定两个字符串 s 和 pattern。
福大大架构师每日一题
2025/05/01
550
2025-05-01:第一个几乎相等子字符串的下标。用go语言,给定两个字符串 s 和 pattern。 如果字符串 x 修改
2024-11-25:满足距离约束且字典序最小的字符串。用go语言,给定一个字符串 s 和一个整数 k,我们需要定义一个函数 d
2024-11-25:满足距离约束且字典序最小的字符串。用go语言,给定一个字符串 s 和一个整数 k,我们需要定义一个函数 distance(s1, s2) 来计算两个长度相同的字符串 s1 和 s2 之间的距离。这个距离的定义是:对于每个索引 i(范围从 0 到 n-1),找出字符 s1[i] 和 s2[i] 之间的最小循环距离,并将这些最小距离相加。
福大大架构师每日一题
2024/11/26
4250
2024-11-25:满足距离约束且字典序最小的字符串。用go语言,给定一个字符串 s 和一个整数 k,我们需要定义一个函数 d
2024-10-26:最长公共后缀查询。用go语言,给定两个字符串数组 wordsContainer 和 wordsQuery,
2024-10-26:最长公共后缀查询。用go语言,给定两个字符串数组 wordsContainer 和 wordsQuery,要对每个 wordsQuery[i] 找到一个与其有最长公共后缀的字符串。如果有多个字符串与 wordsQuery[i] 有相同的最长公共后缀,则返回在 wordsContainer 中最早出现的那个。最后,返回一个整数数组 ans,其中 ans[i] 表示与 wordsQuery[i] 有最长公共后缀的字符串在 wordsContainer 中的下标。
福大大架构师每日一题
2024/10/29
1040
2024-10-26:最长公共后缀查询。用go语言,给定两个字符串数组 wordsContainer 和 wordsQuery,
2025-04-26:统计重新排列后包含另一个字符串的子字符串数目Ⅰ。用go语言,给定两个字符串 word1 和 word2。如
2025-04-26:统计重新排列后包含另一个字符串的子字符串数目Ⅰ。用go语言,给定两个字符串 word1 和 word2。如果存在一个字符串 x,使得经过重新排列后,word2 是 x 的一个前缀,那么 x 就被称为“合法”的字符串。
福大大架构师每日一题
2025/04/26
1090
2025-04-26:统计重新排列后包含另一个字符串的子字符串数目Ⅰ。用go语言,给定两个字符串 word1 和 word2。如
2024-11-27:字符串的分数。用go语言,给定一个字符串 s,我们可以定义其“分数”为相邻字符的 ASCII 码差值绝对值
2024-11-27:字符串的分数。用go语言,给定一个字符串 s,我们可以定义其“分数”为相邻字符的 ASCII 码差值绝对值的总和。
福大大架构师每日一题
2024/11/28
1400
2024-11-27:字符串的分数。用go语言,给定一个字符串 s,我们可以定义其“分数”为相邻字符的 ASCII 码差值绝对值
2025-03-09:字符串元音游戏。用go语言,小红和小明正在进行一个涉及字符串的游戏。 给定一个字符串 s,小红和小明交替进
2025-03-09:字符串元音游戏。用go语言,小红和小明正在进行一个涉及字符串的游戏。
福大大架构师每日一题
2025/03/10
1200
2025-03-09:字符串元音游戏。用go语言,小红和小明正在进行一个涉及字符串的游戏。 给定一个字符串 s,小红和小明交替进
2024-12-20:两个字符串的排列差。用go语言,给定两个字符串 s 和 t,每个字符串中的字符都是唯一的,并且 t 是 s
2024-12-20:两个字符串的排列差。用go语言,给定两个字符串 s 和 t,每个字符串中的字符都是唯一的,并且 t 是 s 的一种排列。
福大大架构师每日一题
2024/12/20
1710
2024-12-20:两个字符串的排列差。用go语言,给定两个字符串 s 和 t,每个字符串中的字符都是唯一的,并且 t 是 s
2025-02-22:找出加密后的字符串。用go语言,给定一个字符串 s 和一个整数 k,请使用以下方法对字符串进行加密: 对于
2025-02-22:找出加密后的字符串。用go语言,给定一个字符串 s 和一个整数 k,请使用以下方法对字符串进行加密:
福大大架构师每日一题
2025/02/25
1070
2025-02-22:找出加密后的字符串。用go语言,给定一个字符串 s 和一个整数 k,请使用以下方法对字符串进行加密: 对于
2024-07-20:用go语言,给定一个字符串 s, 依次遍历 ‘a‘ 到 ‘z‘, 每次操作删除 s 中出现位置最早的字符,
第一轮操作后,s = "aabcbbca",删除最早出现的 'a'、'b'、'c',得 s = "abbca"。
福大大架构师每日一题
2024/08/16
1260
2024-07-20:用go语言,给定一个字符串 s, 依次遍历 ‘a‘ 到 ‘z‘, 每次操作删除 s 中出现位置最早的字符,
2024-12-03:统计特殊字母的数量Ⅰ。用go语言,给定一个字符串 word,统计其中具有大写和小写形式同时存在的字母的数量
2024-12-03:统计特殊字母的数量Ⅰ。用go语言,给定一个字符串 word,统计其中具有大写和小写形式同时存在的字母的数量。
福大大架构师每日一题
2024/12/05
1700
2024-12-03:统计特殊字母的数量Ⅰ。用go语言,给定一个字符串 word,统计其中具有大写和小写形式同时存在的字母的数量
推荐阅读
2024-12-15:同位字符串连接的最小长度。用go语言,给定一个字符串s,由字符串t和t的多个同位字符串连接而成。 要求计算
1850
2025-05-24:字符串转换后的长度Ⅰ。用go语言,给定一个字符串 s 和一个整数 t,表示需要进行的转换次数。每次转换中,
610
2024-10-16:用go语言,找出一个字符串中每个字符最多出现两次的最长子串,并返回该子串的最大长度。 输入: s = “b
1820
2024-10-08:用go语言,给定一个字符串 word 和一个整数 k,判断是否可以通过删除最少数量的字符使得该字符串成为
1420
2024-12-19:分割字符频率相等的最少子字符串
1010
2024-09-21:用go语言,给定一个字符串 s,字符串中的每个字符要么是小写字母,要么是问号‘?‘。对于一个仅包含小写字母
1640
2025-05-16:字符至少出现 K 次的子字符串Ⅰ。用go语言,给定一个字符串 s 和一个整数 k,要求统计 s 中所有子字
840
2025-01-02:压缩字符串Ⅲ。用go语言,给定一个字符串 word,请按照以下算法进行压缩: 1.从一个空字符串 comp
1270
2025-07-03:使字符频率相等的最少操作次数。用go语言,给定一个字符串 s。 如果某个字符串 t 中所有字符的出现次数相
830
2025-04-27:统计重新排列后包含另一个字符串的子字符串数目Ⅱ。用go语言,给定两个字符串 word1 和 word2,
770
2025-05-01:第一个几乎相等子字符串的下标。用go语言,给定两个字符串 s 和 pattern。 如果字符串 x 修改
550
2024-11-25:满足距离约束且字典序最小的字符串。用go语言,给定一个字符串 s 和一个整数 k,我们需要定义一个函数 d
4250
2024-10-26:最长公共后缀查询。用go语言,给定两个字符串数组 wordsContainer 和 wordsQuery,
1040
2025-04-26:统计重新排列后包含另一个字符串的子字符串数目Ⅰ。用go语言,给定两个字符串 word1 和 word2。如
1090
2024-11-27:字符串的分数。用go语言,给定一个字符串 s,我们可以定义其“分数”为相邻字符的 ASCII 码差值绝对值
1400
2025-03-09:字符串元音游戏。用go语言,小红和小明正在进行一个涉及字符串的游戏。 给定一个字符串 s,小红和小明交替进
1200
2024-12-20:两个字符串的排列差。用go语言,给定两个字符串 s 和 t,每个字符串中的字符都是唯一的,并且 t 是 s
1710
2025-02-22:找出加密后的字符串。用go语言,给定一个字符串 s 和一个整数 k,请使用以下方法对字符串进行加密: 对于
1070
2024-07-20:用go语言,给定一个字符串 s, 依次遍历 ‘a‘ 到 ‘z‘, 每次操作删除 s 中出现位置最早的字符,
1260
2024-12-03:统计特殊字母的数量Ⅰ。用go语言,给定一个字符串 word,统计其中具有大写和小写形式同时存在的字母的数量
1700
相关推荐
2024-12-15:同位字符串连接的最小长度。用go语言,给定一个字符串s,由字符串t和t的多个同位字符串连接而成。 要求计算
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档