前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2024-09-07:用go语言,给定一个包含 n 个非空字符串的数组 arr,你的任务是找出一个长度为 n 的字符串数组 an

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

作者头像
福大大架构师每日一题
发布2024-09-12 18:50:26
750
发布2024-09-12 18:50:26
举报
文章被收录于专栏:福大大架构师每日一题

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
复制
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
复制
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 删除。

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

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