Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >2024-09-07:用go语言,给定一个包含 n 个非空字符串的数组 arr,你的任务是找出一个长度为 n 的字符串数组 an

2024-09-07:用go语言,给定一个包含 n 个非空字符串的数组 arr,你的任务是找出一个长度为 n 的字符串数组 an

作者头像
福大大架构师每日一题
发布于 2024-09-12 10:50:26
发布于 2024-09-12 10:50:26
17800
代码可运行
举报
运行总次数:0
代码可运行

2024-09-07:用go语言,给定一个包含 n 个非空字符串的数组 arr,你的任务是找出一个长度为 n 的字符串数组 answer。

满足以下条件:

对于每个索引 i,answer[i] 是 arr[i] 的最短子字符串,并且这个子字符串不是 arr 中其他字符串的子字符串。

如果有多个这样的子字符串,则选择字典序最小的一个。

如果不存在这样的子字符串,则对应位置的 answer[i] 应为一个空字符串。

你需要编写一个算法来实现以上要求,并返回生成的字符串数组 answer。

输入:arr = ["cab","ad","bad","c"]。

输出:["ab","","ba",""]。

解释:求解过程如下:

对于字符串 "cab" ,最短没有在其他字符串中出现过的子字符串是 "ca" 或者 "ab" ,我们选择字典序更小的子字符串,也就是 "ab" 。

对于字符串 "ad" ,不存在没有在其他字符串中出现过的子字符串。

对于字符串 "bad" ,最短没有在其他字符串中出现过的子字符串是 "ba" 。

对于字符串 "c" ,不存在没有在其他字符串中出现过的子字符串。

答案2024-09-07:

chatgpt

题目来自leetcode3076。

大体步骤如下:

Go完整代码如下:

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

import(
"fmt"
"strings"
)

func shortestSubstrings(arr []string)[]string{
    ans :=make([]string,len(arr))
for i, s :=range arr {
        m :=len(s)
        res :=""
for size :=1; size <= m && res ==""; size++{
next:
for k := size; k <= m; k++{
sub:= s[k-size : k]
if res !=""&&sub>= res {
continue
}
for j, t :=range arr {
if j != i && strings.Contains(t,sub){
continuenext
}
}
                res =sub
}
}
        ans[i]= res
}
return ans
}

func main(){
    arr :=[]string{"cab","ad","bad","c"}
    fmt.Println(shortestSubstrings(arr))
}

Rust完整代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
use std::collections::HashSet;

fnshortest_substrings(arr:Vec<&str>)->Vec<String>{
letmut ans=vec![String::new(); arr.len()];

for(i, s)in arr.iter().enumerate(){
letm= s.len();
letmut res=String::new();

forsizein1..=m {
if!res.is_empty(){
break;
}
forkin size..=m {
letsub=&s[k - size..k];
if!res.is_empty()&& sub >= res.as_str(){
continue;
}
letmut found=false;

for(j, t)in arr.iter().enumerate(){
if j != i && t.contains(sub){
                        found =true;
break;
}
}

if!found {
                    res = sub.to_string();
}
}
}
        ans[i]= res;
}

    ans
}

fnmain(){
letarr=vec!["cab","ad","bad","c"];
println!("{:?}",shortest_substrings(arr));
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-09-11,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
用go语言,给定一个包含 n 个非空字符串的数组 arr,你的任务是找出一个长度为 n 的字符串数组 answer
对于每个索引 i,answer[i] 是 arr[i] 的最短子字符串,并且这个子字符串不是 arr 中其他字符串的子字符串。
码农编程进阶笔记
2025/04/22
1070
用go语言,给定一个包含 n 个非空字符串的数组 arr,你的任务是找出一个长度为 n 的字符串数组 answer
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
910
2024-12-19:分割字符频率相等的最少子字符串
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
970
2024-10-26:最长公共后缀查询。用go语言,给定两个字符串数组 wordsContainer 和 wordsQuery,
2025-03-30:统计满足 K 约束的子字符串数量Ⅱ。用go语言,给定一个二进制字符串 s 和一个整数 k,还有一个二维整数
2025-03-30:统计满足 K 约束的子字符串数量Ⅱ。用go语言,给定一个二进制字符串 s 和一个整数 k,还有一个二维整数数组 queries,其中每个元素 queries[i] = [li, ri] 代表一个查询。
福大大架构师每日一题
2025/03/31
490
2025-03-30:统计满足 K 约束的子字符串数量Ⅱ。用go语言,给定一个二进制字符串 s 和一个整数 k,还有一个二维整数
2024-12-14:K 周期字符串需要的最少操作次数。用go语言,给定一个长度为n的字符串 word 和一个整数k,k是n的因
2024-12-14:K 周期字符串需要的最少操作次数。用go语言,给定一个长度为n的字符串 word 和一个整数k,k是n的因数。每次操作可以选择两个下标i和j,使得i和j都可以被k整除,然后用从j开始的长度为k的子串替换从i开始的长度为k的子串。要使得word成为一个K周期字符串,需要进行最少的操作次数。
福大大架构师每日一题
2024/12/19
1190
2024-12-14:K 周期字符串需要的最少操作次数。用go语言,给定一个长度为n的字符串 word 和一个整数k,k是n的因
2025-05-24:字符串转换后的长度Ⅰ。用go语言,给定一个字符串 s 和一个整数 t,表示需要进行的转换次数。每次转换中,
2025-05-24:字符串转换后的长度Ⅰ。用go语言,给定一个字符串 s 和一个整数 t,表示需要进行的转换次数。每次转换中,对字符串中每个字符进行如下替换规则:
福大大架构师每日一题
2025/05/25
540
2025-05-24:字符串转换后的长度Ⅰ。用go语言,给定一个字符串 s 和一个整数 t,表示需要进行的转换次数。每次转换中,
2022-09-01:字符串的 波动 定义为子字符串中出现次数 最多 的字符次数与出现次数 最少 的字符次数之差。 给你一个字符串 s ,它只包含小写英文字母。
2022-09-01:字符串的 波动 定义为子字符串中出现次数 最多 的字符次数与出现次数 最少 的字符次数之差。
福大大架构师每日一题
2022/09/01
5150
2022-09-01:字符串的 波动 定义为子字符串中出现次数 最多 的字符次数与出现次数 最少 的字符次数之差。 给你一个字符串 s ,它只包含小写英文字母。
LeetCode 1638. 统计只差一个字符的子串数目(DP)
给你两个字符串 s 和 t ,请你找出 s 中的非空子串的数目,这些子串满足替换 一个不同字符 以后,是 t 串的子串。 换言之,请你找到 s 和 t 串中 恰好 只有一个字符不同的子字符串对的数目。
Michael阿明
2021/02/19
5190
2025-03-27:统计满足 K 约束的子字符串数量Ⅰ。用go语言,给定一个二进制字符串 s 和一个整数 k,定义满足 k 约
2025-03-27:统计满足 K 约束的子字符串数量Ⅰ。用go语言,给定一个二进制字符串 s 和一个整数 k,定义满足 k 约束的条件为:
福大大架构师每日一题
2025/03/27
610
2025-03-27:统计满足 K 约束的子字符串数量Ⅰ。用go语言,给定一个二进制字符串 s 和一个整数 k,定义满足 k 约
2025-03-14:统计 1 显著的字符串的数量。用go语言,给定一个二进制字符串 s,请你计算其中被称为“1 显著”的子字符
2025-03-14:统计 1 显著的字符串的数量。用go语言,给定一个二进制字符串 s,请你计算其中被称为“1 显著”的子字符串的数量。
福大大架构师每日一题
2025/03/14
800
2025-03-14:统计 1 显著的字符串的数量。用go语言,给定一个二进制字符串 s,请你计算其中被称为“1 显著”的子字符
2023-08-18:用go写算法。你会得到一个字符串 text,你应该把它分成 k 个子字符串 (subtext1, subt
你应该把它分成 k 个子字符串 (subtext1, subtext2,…, subtextk)。
福大大架构师每日一题
2023/08/29
2200
2023-08-18:用go写算法。你会得到一个字符串 text,你应该把它分成 k 个子字符串 (subtext1, subt
2024-09-18:用go语言,给定一个从 0 开始的长度为 n 的正整数数组 nums 和一个二维操作数组 queries,
2024-09-18:用go语言,给定一个从 0 开始的长度为 n 的正整数数组 nums 和一个二维操作数组 queries,每个操作由一个下标值 indexi 和一个数值 ki 组成。
福大大架构师每日一题
2024/09/19
1700
2024-09-18:用go语言,给定一个从 0 开始的长度为 n 的正整数数组 nums 和一个二维操作数组 queries,
2024-12-18:正方形中的最多点数。用go语言,给定一个二维数组 points 和一个字符串 s,其中 points[i]
2024-12-18:正方形中的最多点数。用go语言,给定一个二维数组 points 和一个字符串 s,其中 points[i] 表示第 i 个点的坐标,s[i] 表示第 i 个点的标签。
福大大架构师每日一题
2024/12/19
840
2024-12-18:正方形中的最多点数。用go语言,给定一个二维数组 points 和一个字符串 s,其中 points[i]
2022-11-03:给定一个数组arr,和一个正数k 如果arr[i] == 0,表示i这里既可以是左括号也可以是右括号, 而且可以涂上1~k每一种颜色 如果
2022-11-03:给定一个数组arr,和一个正数k如果arri == 0,表示i这里既可以是左括号也可以是右括号,而且可以涂上1~k每一种颜色如果arri != 0,表示i这里已经确定是左括号,颜色就是arri的值那么arr整体就可以变成某个括号字符串,并且每个括号字符都带有颜色。返回在括号字符串合法的前提下,有多少种不同的染色方案。不管是排列、还是颜色,括号字符串任何一点不一样,就算不同的染色方案最后的结果%10001,为了方便,我们不处理mod,就管核心思路。2 <= arr长度 <= 50001
福大大架构师每日一题
2022/11/03
3160
2022-11-03:给定一个数组arr,和一个正数k 如果arr[i] == 0,表示i这里既可以是左括号也可以是右括号, 而且可以涂上1~k每一种颜色 如果
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
3910
2024-11-25:满足距离约束且字典序最小的字符串。用go语言,给定一个字符串 s 和一个整数 k,我们需要定义一个函数 d
2024-03-27:用go语言,多维费用背包。 给你一个二进制字符串数组 strs 和两个整数 m 和 n, 请你找出并返回
请你找出并返回 strs 的最大子集的长度,该子集中 最多 有 m 个 0 和 n 个 1。
福大大架构师每日一题
2024/04/11
1690
2024-03-27:用go语言,多维费用背包。 给你一个二进制字符串数组 strs 和两个整数 m 和 n, 请你找出并返回
2023-03-18:给定一个长度n的数组,每次可以选择一个数x, 让这个数组中所有的x都变成x+1,问你最少的操作次数, 使得这个数组变成一个非降数组。 n
本题可以用多种算法来解决,下面我们将介绍四种常见的做法,分别是暴力枚举、动态规划、单调栈和差分。
福大大架构师每日一题
2023/03/18
1K0
2023-03-18:给定一个长度n的数组,每次可以选择一个数x, 让这个数组中所有的x都变成x+1,问你最少的操作次数, 使得这个数组变成一个非降数组。 n
2024-05-18:用go语言,给定一个从 0 开始的字符串 s,以及两个子字符串 a 和 b,还有一个整数 k。 定义一个“
2024-05-18:用go语言,给定一个从 0 开始的字符串 s,以及两个子字符串 a 和 b,还有一个整数 k。
福大大架构师每日一题
2024/05/27
1650
2024-05-18:用go语言,给定一个从 0 开始的字符串 s,以及两个子字符串 a 和 b,还有一个整数 k。 定义一个“
2025-04-05:哈希分割字符串。用go语言,给定一个长度为 n 的字符串 s 和一个整数 k,其中 n 是 k 的倍数。我
2025-04-05:哈希分割字符串。用go语言,给定一个长度为 n 的字符串 s 和一个整数 k,其中 n 是 k 的倍数。我们的任务是把字符串 s 转换为一个长度为 n / k 的新字符串 result。
福大大架构师每日一题
2025/04/05
1070
2025-04-05:哈希分割字符串。用go语言,给定一个长度为 n 的字符串 s 和一个整数 k,其中 n 是 k 的倍数。我
2025-05-18:判断 DFS 字符串是否是回文串。用go语言,给定一棵包含 n 个节点的树,节点编号从 0 到 n-1,根
2025-05-18:判断 DFS 字符串是否是回文串。用go语言,给定一棵包含 n 个节点的树,节点编号从 0 到 n-1,根节点编号为 0。用一个长度为 n 的数组 parent 表示树的结构,其中 parent[i] 代表节点 i 的父节点,且因为 0 是根节点,所以 parent[0] 必定为 -1。
福大大架构师每日一题
2025/05/18
650
2025-05-18:判断 DFS 字符串是否是回文串。用go语言,给定一棵包含 n 个节点的树,节点编号从 0 到 n-1,根
推荐阅读
用go语言,给定一个包含 n 个非空字符串的数组 arr,你的任务是找出一个长度为 n 的字符串数组 answer
1070
2024-12-19:分割字符频率相等的最少子字符串
910
2024-10-26:最长公共后缀查询。用go语言,给定两个字符串数组 wordsContainer 和 wordsQuery,
970
2025-03-30:统计满足 K 约束的子字符串数量Ⅱ。用go语言,给定一个二进制字符串 s 和一个整数 k,还有一个二维整数
490
2024-12-14:K 周期字符串需要的最少操作次数。用go语言,给定一个长度为n的字符串 word 和一个整数k,k是n的因
1190
2025-05-24:字符串转换后的长度Ⅰ。用go语言,给定一个字符串 s 和一个整数 t,表示需要进行的转换次数。每次转换中,
540
2022-09-01:字符串的 波动 定义为子字符串中出现次数 最多 的字符次数与出现次数 最少 的字符次数之差。 给你一个字符串 s ,它只包含小写英文字母。
5150
LeetCode 1638. 统计只差一个字符的子串数目(DP)
5190
2025-03-27:统计满足 K 约束的子字符串数量Ⅰ。用go语言,给定一个二进制字符串 s 和一个整数 k,定义满足 k 约
610
2025-03-14:统计 1 显著的字符串的数量。用go语言,给定一个二进制字符串 s,请你计算其中被称为“1 显著”的子字符
800
2023-08-18:用go写算法。你会得到一个字符串 text,你应该把它分成 k 个子字符串 (subtext1, subt
2200
2024-09-18:用go语言,给定一个从 0 开始的长度为 n 的正整数数组 nums 和一个二维操作数组 queries,
1700
2024-12-18:正方形中的最多点数。用go语言,给定一个二维数组 points 和一个字符串 s,其中 points[i]
840
2022-11-03:给定一个数组arr,和一个正数k 如果arr[i] == 0,表示i这里既可以是左括号也可以是右括号, 而且可以涂上1~k每一种颜色 如果
3160
2024-11-25:满足距离约束且字典序最小的字符串。用go语言,给定一个字符串 s 和一个整数 k,我们需要定义一个函数 d
3910
2024-03-27:用go语言,多维费用背包。 给你一个二进制字符串数组 strs 和两个整数 m 和 n, 请你找出并返回
1690
2023-03-18:给定一个长度n的数组,每次可以选择一个数x, 让这个数组中所有的x都变成x+1,问你最少的操作次数, 使得这个数组变成一个非降数组。 n
1K0
2024-05-18:用go语言,给定一个从 0 开始的字符串 s,以及两个子字符串 a 和 b,还有一个整数 k。 定义一个“
1650
2025-04-05:哈希分割字符串。用go语言,给定一个长度为 n 的字符串 s 和一个整数 k,其中 n 是 k 的倍数。我
1070
2025-05-18:判断 DFS 字符串是否是回文串。用go语言,给定一棵包含 n 个节点的树,节点编号从 0 到 n-1,根
650
相关推荐
用go语言,给定一个包含 n 个非空字符串的数组 arr,你的任务是找出一个长度为 n 的字符串数组 answer
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档