网易首页 > 网易号 > 正文 申请入驻

2026-05-02:使所有字符相等的最小删除代价。用go语言,给定一个字符串 s(长度为 n)和一个数组 cost。其中 cost[i] 表示删除 s...

0
分享至

2026-05-02:使所有字符相等的最小删除代价。用go语言,给定一个字符串 s(长度为 n)和一个数组 cost。其中 cost[i] 表示删除 s 中第 i 个字符所需要的代价。你可以任意选择要删除哪些字符(可以删除任意多个,也可以不删),但最终得到的字符串必须满足两点:

1)不能是空串;

2)最终字符串的所有字符都要相同(即由某一种字符重复组成)。

问:为了达到上述条件,最小的删除总代价是多少?

n == s.length == cost.length。

1 <= n <= 100000。

1 <= cost[i] <= 1000000000。

s 仅由小写英文字母组成。

输入: s = "aabaac", cost = [1,2,3,4,1,10]。

输出: 11。

解释:

删除索引为 0、1、2、3 和 4 的字符后,字符串变为 "c",它由相同的字符组成,总删除代价为:cost[0] + cost[1] + cost[2] + cost[3] + cost[4] = 1 + 2 + 3 + 4 + 1 = 11。

题目来自力扣3784。

代码解题过程分步详细描述 第一步:理解核心解题思路

题目要求最终字符串所有字符相同且非空,最小删除代价等价于:
选择保留某一种字符(a-z中的一种),删除其他所有字符,计算每种选择的删除代价,最终取最小代价。

反向推导更简单:
总删除代价 = 所有字符的删除代价总和 - 保留字符的总代价(保留的字符不需要删除,减去这部分就是删除其他字符的代价)。
因此,要让删除代价最小,就需要让保留字符的总代价最大。

第二步:计算所有字符的总删除代价

遍历字符串和代价数组,把每一个字符的删除代价全部加起来,得到总代价。

  • • 字符:a a b a a c

  • • 代价:1 2 3 4 1 10

  • • 总代价 = 1+2+3+4+1+10 =21

第三步:统计每种小写字母的总代价

创建26个位置(对应a-z),分别累加每一种字符对应的所有删除代价:

  1. 1. 字符a:出现在索引0、1、3、4,代价总和 = 1+2+4+1 =8

  2. 2. 字符b:出现在索引2,代价总和 =3

  3. 3. 字符c:出现在索引5,代价总和 =10

  4. 4. 其余字母(d-z):没有出现,代价总和 = 0
    最终统计结果:a=8,b=3,c=10,其余=0

第四步:找到代价最大的字符

从26个字母的总代价中,找出数值最大的那个值:
对比 8、3、10、0...,最大值是10(对应字符c)。

第五步:计算最小删除代价

用总代价减去最大保留代价,就是最终答案:
最小删除代价 = 21 - 10 =11,和题目输出一致。

时间复杂度与额外空间复杂度分析 1. 时间复杂度

  • • 遍历字符串和代价数组,统计总代价、各字母代价:O(n)(n是字符串长度)

  • • 查找26个字母中的最大值:O(1)(固定26个元素,与n无关)

  • • 总体时间复杂度:O(n),能高效处理n≤100000的场景。

2. 额外空间复杂度
  • • 仅使用了固定大小的数组[26]int、几个变量(total、遍历索引等)

  • • 额外空间不随输入规模n变化,属于常数级空间

  • • 总体额外空间复杂度:O(1)

总结
  1. 1. 解题核心:总代价 - 最大单字符代价 = 最小删除代价;

  2. 2. 时间复杂度O(n),线性遍历一次即可完成计算;

  3. 3. 额外空间复杂度O(1),仅使用固定大小的辅助空间。

Go完整代码如下:

package main

import (
"fmt"
"slices"
)

func minCost(s string, cost []int)int64 {
total := 0
sum := [26]int{}
for i, x := range cost {
total += x
sum[s[i]-'a'] += x
}
returnint64(total - slices.Max(sum[:]))
}

func main() {
s := "aabaac"
cost := []int{1, 2, 3, 4, 1, 10}
result := minCost(s, cost)
fmt.Println(result)
}

Python完整代码如下:

# -*-coding:utf-8-*-

def minCost(s: str, cost: list[int]) -> int:
total = 0
sum_list = [0] * 26
for i, x in enumerate(cost):
total += x
sum_list[ord(s[i]) - ord('a')] += x
return total - max(sum_list)

def main():
s = "aabaac"
cost = [1, 2, 3, 4, 1, 10]
result = minCost(s, cost)
print(result)

if __name__ == "__main__":
main()

C++完整代码如下:

  




long long minCost(std::string s, std::vector& cost) {
long long total = 0;
std::vector sum(26, 0);

for (int i = 0; i < cost.size(); i++) {
total += cost[i];
sum[s[i] - 'a'] += cost[i];
}

return total - *std::max_element(sum.begin(), sum.end());
}

int main() {
std::string s = "aabaac";
std::vector cost = {1, 2, 3, 4, 1, 10};
long long result = minCost(s, cost);
std::cout << result << std::endl;
return0;
}

我们相信人工智能为普通人提供了一种“增强工具”,并致力于分享全方位的AI知识。在这里,您可以找到最新的AI科普文章、工具评测、提升效率的秘籍以及行业洞察。 欢迎关注“福大大架构师每日一题”,发消息可获得面试资料,让AI助力您的未来发展。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
徐向前晚年吐露终极秘史:若无西安事变,红军早已开启第二次长征

徐向前晚年吐露终极秘史:若无西安事变,红军早已开启第二次长征

范剬舍长
2026-08-16 10:21:07
只差1球!亚马尔太强了,狂轰12球+8助攻,姆巴佩纪录“难保”

只差1球!亚马尔太强了,狂轰12球+8助攻,姆巴佩纪录“难保”

汪星人哟
2026-10-12 15:17:01
知名女星现身武汉!现场观众高呼:好美!

知名女星现身武汉!现场观众高呼:好美!

极目新闻
2026-10-12 20:02:44
恭喜国足!恭喜邵佳一!29岁归化爆发,苦等7年有望迎来国家队首秀

恭喜国足!恭喜邵佳一!29岁归化爆发,苦等7年有望迎来国家队首秀

禾三千体育
2026-10-12 17:59:41
比蒂勒曼斯、梅努还差!曼联双人组堪称灾难!卡里克别再首发!

比蒂勒曼斯、梅努还差!曼联双人组堪称灾难!卡里克别再首发!

澜归序
2026-10-13 09:02:07
美国著名经济学家理查德•沃尔夫有一个观点:中国的制度优势让美国感到害怕,这是一切问题产生的根源

美国著名经济学家理查德•沃尔夫有一个观点:中国的制度优势让美国感到害怕,这是一切问题产生的根源

扶苏聊历史
2026-10-10 10:45:44
华子轰26分胜尼克斯!布伦森空砍20+5,唐斯消极比赛?三球10+7

华子轰26分胜尼克斯!布伦森空砍20+5,唐斯消极比赛?三球10+7

你的篮球频道
2026-10-13 10:06:54
巴萨天赐良机!世界最佳神锋拒绝皇马!诺坎普或迎来史诗级补强

巴萨天赐良机!世界最佳神锋拒绝皇马!诺坎普或迎来史诗级补强

澜归序
2026-10-13 08:33:33
侄女刚被辞退,我正巧和她总经理吃饭:听说你们把我侄女开除了?

侄女刚被辞退,我正巧和她总经理吃饭:听说你们把我侄女开除了?

大熊欢乐坊
2026-10-13 11:34:11
为了防止七天白嫖党,女装大规模启用防拆带,结果一群小仙女破防了

为了防止七天白嫖党,女装大规模启用防拆带,结果一群小仙女破防了

张晓磊
2026-10-06 12:12:52
48岁兰帕德狂笑!英超升班马4-1胜纽卡:4连败到2连胜 跟曼联同分

48岁兰帕德狂笑!英超升班马4-1胜纽卡:4连败到2连胜 跟曼联同分

风过乡
2026-10-13 06:44:30
泽连斯基喊话普京,只要答应他一个条件,自己可以放弃总统宝座

泽连斯基喊话普京,只要答应他一个条件,自己可以放弃总统宝座

史料布籍
2026-10-12 21:40:21
财政部:消费税重大改革!税源下放地方,央地财政格局大变革

财政部:消费税重大改革!税源下放地方,央地财政格局大变革

陈博世财经
2026-10-12 14:25:52
武网大冷门!输郑钦文之人主场翻身:2-1险胜伊埃拉,会师美网亚军!

武网大冷门!输郑钦文之人主场翻身:2-1险胜伊埃拉,会师美网亚军!

刘姚尧的文字城堡
2026-10-13 08:17:48
笑死,去旅游千万不要让小登做攻略,网友:三天瘦五斤遭老罪了

笑死,去旅游千万不要让小登做攻略,网友:三天瘦五斤遭老罪了

夜深爱杂谈
2026-10-12 19:55:30
29万亿应收账款,该怎么清欠?|《财经》封面

29万亿应收账款,该怎么清欠?|《财经》封面

财经杂志
2026-10-12 18:39:26
受贿数额特别巨大!原副部长级干部潘良被提起公诉,离职后仍利用原职权为他人谋取不正当利益

受贿数额特别巨大!原副部长级干部潘良被提起公诉,离职后仍利用原职权为他人谋取不正当利益

每日经济新闻
2026-10-12 17:28:26
北理工助教裴轶近况曝光!微博签名改成“宁鸣而死,不默而生”,很不服气

北理工助教裴轶近况曝光!微博签名改成“宁鸣而死,不默而生”,很不服气

小徐讲八卦
2026-10-13 10:47:27
尊界车主,不值得同情

尊界车主,不值得同情

神不隆通
2026-10-12 10:21:49
卡萨诺:齐沃的国米踢的是欧洲式足球;三冠王国米根本没法看

卡萨诺:齐沃的国米踢的是欧洲式足球;三冠王国米根本没法看

懂球帝
2026-10-13 09:25:24
2026-10-13 12:23:00
moonfdd incentive-icons
moonfdd
福大大架构师每日一题
1511文章数 83关注度
往期回顾 全部

科技要闻

扎克伯格宣布追上OpenAI!Meta新模型亮相

头条要闻

尊界V800发布说明 知情者:门店销售将逐一跟用户沟通

头条要闻

尊界V800发布说明 知情者:门店销售将逐一跟用户沟通

体育要闻

一周吃6顿披萨的胖子,也能单防姆巴佩?

娱乐要闻

小S女儿许曦文晒照片,形似大S

财经要闻

宜信终于还是爆雷了!最后的P2P大佬被抓

汽车要闻

小鹏G9L巴黎车展全球上市 法国市场售价74990欧元起

态度原创

游戏
本地
时尚
公开课
军事航空

《海塔尔》第一章更新 新增首领地下城与多人小游戏

本地新闻

踏访沙县第一村,寻国民小吃本源

从低谷到巅峰,她让中国网球等了二十年

公开课

李玫瑾:为什么性格比能力更重要?

军事要闻

胡塞武装持续发动袭击 沙特王储被指辗转多个地堡宫殿

无障碍浏览 进入关怀版