力扣第 282 场周赛 :互为字母异位词的最少步骤数

简介: 字母异位词 指字母相同但是顺序不同(或者相同)的字符串。

13.png

一、问题描述


给你两个字符串 st 。在一步操作中,你可以给 s 或者 t 追加 任一字符

返回使 st 互为 字母异位词 所需的最少步骤数。


字母异位词 指字母相同但是顺序不同(或者相同)的字符串。


题目链接:使两字符串互为字母异位词的最少步骤数


二、题目要求


样例

输入:s="leetcode", t="coats"输出:7解释:-执行2步操作,将"as"追加到s="leetcode"中,得到s="leetcodeas"-执行5步操作,将"leede"追加到t="coats"中,得到t="coatsleede""leetcodeas""coatsleede"互为字母异位词。总共用去2+5=7步。可以证明,无法用少于7步操作使这两个字符串互为字母异位词。


考察

字符串应用,容易超时
建议用时15~30min


三、问题分析


一开始我的思路是,遍历字符串s中有的字符而字符串t里面没有的,遍历字符串t中有的字符而字符串s里面没有的,最后输出结果。

重复出现的需要特别计算,所以我搞了一个中间变量s1;36.png

38.png

但这种方法超时了,剩下20个测试没法通过,超时要优化的痛谁懂。

想起C++的模板库map可以计数,只要计算出两个字符串所有相同的最小字符数,再将两个字符串的总长度减去2倍,不就行了。

上面的例子用mapa,b;表示如下:

leetcodec1d1e3l1o1t1coatsa1c1o1s1t1

两个字符串的字符数目如果有相同的话,选取最小的相同数目。


四、编码实现


classSolution {
public:
intminSteps(strings, stringt) {
map<char,int>a,b;//定义两个map数组inti,m=s.size(),n=t.size(),ans=0;//数据初始化charj;
for(i=0;i<m;i++)
        {
a[s[i]]++;//对字符串s进行map计数        }
for(i=0;i<n;i++)
        {
b[t[i]]++;//对字符串t进行map计数        }
for(j='a'; j<='z'; j++)//注意,一开始m['a']这些值初始化为0        {
ans+=min(a[j], b[j]);//获取相同公共字符的最小值        }
returnm+n-2*ans;//返回结果    }
};


五、测试结果37.png


相关文章
|
4月前
|
存储 算法
LeetCode第49题字母异位词分组
LeetCode第49题"字母异位词分组"的解题方法,通过将每个字符串的字符排序后作为键存储在HashMap中,有效地将所有字母异位词分组。
LeetCode第49题字母异位词分组
|
2月前
|
存储
Leetcode第49题(字母异位词分组)
LeetCode第49题要求将字符串数组中的字母异位词分组,可以通过将每个字符串排序后作为键存入哈希表,最后将哈希表中的值添加到结果列表中来实现。
17 1
|
2月前
|
算法
Leetcode第十七题(电话号码的字母组合)
这篇文章介绍了如何使用深度优先搜索(DFS)算法来解决LeetCode第17题——电话号码的字母组合问题,通过递归方法生成所有可能的字母组合。
23 0
Leetcode第十七题(电话号码的字母组合)
|
2月前
|
索引
【LeetCode 11】242.有效的字母异位词
【LeetCode 11】242.有效的字母异位词
18 0
【LeetCode 11】242.有效的字母异位词
|
2月前
|
算法
【LeetCode 52】17.电话号码的字母组合
【LeetCode 52】17.电话号码的字母组合
42 0
|
4月前
|
算法
LeetCode第17题电话号码的字母组合
该文章介绍了 LeetCode 第 17 题电话号码的字母组合的解法,通过分析得出可使用递归和回溯的思想解决,避免循环穷举的高循环次数,并给出了具体的编码实现,同时总结了该题较难理解,需要了解递归的本质,当嵌套循环层次多时可考虑递归。
LeetCode第17题电话号码的字母组合
|
6月前
|
算法 容器
【LeetCode刷题】滑动窗口解决问题:水果成篮、找到字符串中所有字母异位词
【LeetCode刷题】滑动窗口解决问题:水果成篮、找到字符串中所有字母异位词
|
6月前
|
存储
力扣经典150题第四十二题:字母异位词分组
力扣经典150题第四十二题:字母异位词分组
37 0
|
6月前
|
存储
力扣经典150题第四十一题:有效的字母异位词
力扣经典150题第四十一题:有效的字母异位词
29 0
|
3月前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行