首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
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
19800
代码可运行
举报
运行总次数: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
1420
用go语言,给定一个包含 n 个非空字符串的数组 arr,你的任务是找出一个长度为 n 的字符串数组 answer
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,
2022-09-01:字符串的 波动 定义为子字符串中出现次数 最多 的字符次数与出现次数 最少 的字符次数之差。 给你一个字符串 s ,它只包含小写英文字母。
2022-09-01:字符串的 波动 定义为子字符串中出现次数 最多 的字符次数与出现次数 最少 的字符次数之差。
福大大架构师每日一题
2022/09/01
5360
2022-09-01:字符串的 波动 定义为子字符串中出现次数 最多 的字符次数与出现次数 最少 的字符次数之差。 给你一个字符串 s ,它只包含小写英文字母。
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:分割字符频率相等的最少子字符串
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
820
2025-05-18:判断 DFS 字符串是否是回文串。用go语言,给定一棵包含 n 个节点的树,节点编号从 0 到 n-1,根
2025-03-30:统计满足 K 约束的子字符串数量Ⅱ。用go语言,给定一个二进制字符串 s 和一个整数 k,还有一个二维整数
2025-03-30:统计满足 K 约束的子字符串数量Ⅱ。用go语言,给定一个二进制字符串 s 和一个整数 k,还有一个二维整数数组 queries,其中每个元素 queries[i] = [li, ri] 代表一个查询。
福大大架构师每日一题
2025/03/31
590
2025-03-30:统计满足 K 约束的子字符串数量Ⅱ。用go语言,给定一个二进制字符串 s 和一个整数 k,还有一个二维整数
2023-08-18:用go写算法。你会得到一个字符串 text,你应该把它分成 k 个子字符串 (subtext1, subt
你应该把它分成 k 个子字符串 (subtext1, subtext2,…, subtextk)。
福大大架构师每日一题
2023/08/29
2300
2023-08-18:用go写算法。你会得到一个字符串 text,你应该把它分成 k 个子字符串 (subtext1, subt
2025-05-03:元音辅音字符串计数Ⅰ。用go语言,给定一个字符串 word 和一个非负整数 k。我们需要找出 word 的
2025-05-03:元音辅音字符串计数Ⅰ。用go语言,给定一个字符串 word 和一个非负整数 k。我们需要找出 word 的所有子字符串中,满足以下两个条件的子字符串的数量:
福大大架构师每日一题
2025/05/04
1370
2025-05-03:元音辅音字符串计数Ⅰ。用go语言,给定一个字符串 word 和一个非负整数 k。我们需要找出 word 的
2024-09-18:用go语言,给定一个从 0 开始的长度为 n 的正整数数组 nums 和一个二维操作数组 queries,
2024-09-18:用go语言,给定一个从 0 开始的长度为 n 的正整数数组 nums 和一个二维操作数组 queries,每个操作由一个下标值 indexi 和一个数值 ki 组成。
福大大架构师每日一题
2024/09/19
1810
2024-09-18:用go语言,给定一个从 0 开始的长度为 n 的正整数数组 nums 和一个二维操作数组 queries,
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
1410
2024-12-14:K 周期字符串需要的最少操作次数。用go语言,给定一个长度为n的字符串 word 和一个整数k,k是n的因
2023-07-07:给出两个字符串 str1 和 str2。 返回同时以 str1 和 str2 作为子序列的最短字符串。 如
2.创建一个二维数组 dp,其大小为 (n+1) x (m+1),其中 n 是 str1 的长度,m 是 str2 的长度。
福大大架构师每日一题
2023/07/25
2790
2023-07-07:给出两个字符串 str1 和 str2。 返回同时以 str1 和 str2 作为子序列的最短字符串。 如
2023-01-06:给定一个只由小写字母组成的字符串str,长度为N, 给定一个只由0、1组成的数组arr,长度为N, arr[i] == 0表示str中i位
2023-01-06:给定一个只由小写字母组成的字符串str,长度为N,给定一个只由0、1组成的数组arr,长度为N,arri等于 0 表示str中i位置的字符不许修改,arri 等于 1表示str中i位置的字符允许修改,给定一个正数m,表示在任意允许修改的位置,可以把该位置的字符变成a~z中的任何一个,可以修改m次。返回在最多修改m次的情况下,全是一种字符的最长子串是多长。1 <= N, M <= 10^5,所有字符都是小写。来自字节。答案2023-01-06:尝试全变成a一直到全变成z,遍历26次。每次
福大大架构师每日一题
2023/01/06
1.3K0
2023-01-06:给定一个只由小写字母组成的字符串str,长度为N, 给定一个只由0、1组成的数组arr,长度为N, arr[i] == 0表示str中i位
2024-03-27:用go语言,多维费用背包。 给你一个二进制字符串数组 strs 和两个整数 m 和 n, 请你找出并返回
请你找出并返回 strs 的最大子集的长度,该子集中 最多 有 m 个 0 和 n 个 1。
福大大架构师每日一题
2024/04/11
1790
2024-03-27:用go语言,多维费用背包。 给你一个二进制字符串数组 strs 和两个整数 m 和 n, 请你找出并返回
2023-03-18:给定一个长度n的数组,每次可以选择一个数x, 让这个数组中所有的x都变成x+1,问你最少的操作次数, 使得这个数组变成一个非降数组。 n
本题可以用多种算法来解决,下面我们将介绍四种常见的做法,分别是暴力枚举、动态规划、单调栈和差分。
福大大架构师每日一题
2023/03/18
1.1K0
2023-03-18:给定一个长度n的数组,每次可以选择一个数x, 让这个数组中所有的x都变成x+1,问你最少的操作次数, 使得这个数组变成一个非降数组。 n
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
4290
2024-11-25:满足距离约束且字典序最小的字符串。用go语言,给定一个字符串 s 和一个整数 k,我们需要定义一个函数 d
2025-03-14:统计 1 显著的字符串的数量。用go语言,给定一个二进制字符串 s,请你计算其中被称为“1 显著”的子字符
2025-03-14:统计 1 显著的字符串的数量。用go语言,给定一个二进制字符串 s,请你计算其中被称为“1 显著”的子字符串的数量。
福大大架构师每日一题
2025/03/14
860
2025-03-14:统计 1 显著的字符串的数量。用go语言,给定一个二进制字符串 s,请你计算其中被称为“1 显著”的子字符
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
1360
2025-04-05:哈希分割字符串。用go语言,给定一个长度为 n 的字符串 s 和一个整数 k,其中 n 是 k 的倍数。我
字符串-后缀树和后缀数组详解
首先理解后缀的概念,后缀(suffix)即从某个位置开始到末尾的一个子串。例如字符串 ,它的五个后缀为 、 、 、 、 。
唔仄lo咚锵
2021/12/31
5.5K0
字符串-后缀树和后缀数组详解
2022-05-08:给你一个下标从 0 开始的字符串数组 words 。每个字符串都只包含 小写英文字母 。
2022-05-08:给你一个下标从 0 开始的字符串数组 words 。每个字符串都只包含 小写英文字母 。words 中任意一个子串中,每个字母都至多只出现一次。
福大大架构师每日一题
2022/06/04
7620
2022-05-08:给你一个下标从 0 开始的字符串数组 words 。每个字符串都只包含 小写英文字母 。
LeetCode 1876. 长度为三且各字符不同的子字符串
https://leetcode-cn.com/contest/biweekly-contest-53/problems/substrings-of-size-three-with-distinct-characters/
Michael阿明
2021/09/06
9250
推荐阅读
用go语言,给定一个包含 n 个非空字符串的数组 arr,你的任务是找出一个长度为 n 的字符串数组 answer
1420
2024-10-26:最长公共后缀查询。用go语言,给定两个字符串数组 wordsContainer 和 wordsQuery,
1040
2022-09-01:字符串的 波动 定义为子字符串中出现次数 最多 的字符次数与出现次数 最少 的字符次数之差。 给你一个字符串 s ,它只包含小写英文字母。
5360
2024-12-19:分割字符频率相等的最少子字符串
1010
2025-05-18:判断 DFS 字符串是否是回文串。用go语言,给定一棵包含 n 个节点的树,节点编号从 0 到 n-1,根
820
2025-03-30:统计满足 K 约束的子字符串数量Ⅱ。用go语言,给定一个二进制字符串 s 和一个整数 k,还有一个二维整数
590
2023-08-18:用go写算法。你会得到一个字符串 text,你应该把它分成 k 个子字符串 (subtext1, subt
2300
2025-05-03:元音辅音字符串计数Ⅰ。用go语言,给定一个字符串 word 和一个非负整数 k。我们需要找出 word 的
1370
2024-09-18:用go语言,给定一个从 0 开始的长度为 n 的正整数数组 nums 和一个二维操作数组 queries,
1810
2024-12-14:K 周期字符串需要的最少操作次数。用go语言,给定一个长度为n的字符串 word 和一个整数k,k是n的因
1410
2023-07-07:给出两个字符串 str1 和 str2。 返回同时以 str1 和 str2 作为子序列的最短字符串。 如
2790
2023-01-06:给定一个只由小写字母组成的字符串str,长度为N, 给定一个只由0、1组成的数组arr,长度为N, arr[i] == 0表示str中i位
1.3K0
2024-03-27:用go语言,多维费用背包。 给你一个二进制字符串数组 strs 和两个整数 m 和 n, 请你找出并返回
1790
2023-03-18:给定一个长度n的数组,每次可以选择一个数x, 让这个数组中所有的x都变成x+1,问你最少的操作次数, 使得这个数组变成一个非降数组。 n
1.1K0
2024-11-25:满足距离约束且字典序最小的字符串。用go语言,给定一个字符串 s 和一个整数 k,我们需要定义一个函数 d
4290
2025-03-14:统计 1 显著的字符串的数量。用go语言,给定一个二进制字符串 s,请你计算其中被称为“1 显著”的子字符
860
2025-04-05:哈希分割字符串。用go语言,给定一个长度为 n 的字符串 s 和一个整数 k,其中 n 是 k 的倍数。我
1360
字符串-后缀树和后缀数组详解
5.5K0
2022-05-08:给你一个下标从 0 开始的字符串数组 words 。每个字符串都只包含 小写英文字母 。
7620
LeetCode 1876. 长度为三且各字符不同的子字符串
9250
相关推荐
用go语言,给定一个包含 n 个非空字符串的数组 arr,你的任务是找出一个长度为 n 的字符串数组 answer
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档