首页 > 其他分享 >[LeetCode] 1347. Minimum Number of Steps to Make Two Strings Anagram 制造字母异位词的最小步骤数

[LeetCode] 1347. Minimum Number of Steps to Make Two Strings Anagram 制造字母异位词的最小步骤数

时间:2023-06-05 23:56:46浏览次数:44  
标签:字符 映射 Make Two leetcode anagram Anagram Strings make


You are given two strings of the same length s and t. In one step you can choose any character of t and replace it with another character.

Return the minimum number of steps to make t an anagram of s.

An Anagram of a string is a string that contains the same characters with a different (or the same) ordering.

Example 1:

Input: s = "bab", t = "aba"
Output: 1
Explanation: Replace the first 'a' in t with b, t = "bba" which is anagram of s.

Example 2:

Input: s = "leetcode", t = "practice"
Output: 5
Explanation: Replace 'p', 'r', 'a', 'i' and 'c' from t with proper characters to make t anagram of s.

Example 3:

Input: s = "anagram", t = "mangaar"
Output: 0
Explanation: "anagram" and "mangaar" are anagrams.

Constraints:

  • 1 <= s.length <= 5 * 104
  • s.length == t.length
  • s and t consist of lowercase English letters only.

这道题给了两个字符串s和t,说是可以替换t中的字符,问最少替换多少个字符可以使得其与s是变位词。所谓的变位词,就是两个单词中字符的种类和个数均相同,就是字符的顺序不同而已。之前的题目中也做过不少关于变位词的题目,比如 Valid AnagramGroup AnagramsFind Anagram MappingsFind All Anagrams in a String 等等。这类题目的核心就是统计字符的出现次数,这道题也不例外,这里使用一个 HashMap 来统计字符串s中每个字符的出现次数。然后遍历字符串t,对于每个遍历到的字符,将 HashMap 中该字符的映射值自减1,这样操作之后映射值就可正可负,还可能为0。当某个映射值为正数的时候,则说明该字符在s中的数量多,若为负数,则说明该字符在t中的数量多,若为0,则说明该字符在s和t中的个数一样多。由于字符串s和t的长度相同,则正数的映射值累加和一定等于负数映射值的累加和,而且只要将所有的正数的映射字符替换成负数的映射字符,则s和t就会变成变位词,且替换次数最少,参见代码如下:


class Solution {
public:
    int minSteps(string s, string t) {
        int res = 0;
        unordered_map<char, int> charCnt;
        for (char c : s) ++charCnt[c];
        for (char c : t) --charCnt[c];
        for (auto a : charCnt) {
            if (a.second > 0) res += abs(a.second);
        }
        return res;
    }
};

Github 同步地址:

https://github.com/grandyang/leetcode/issues/1347


类似题目:

Valid Anagram

Group Anagrams

Find Anagram Mappings

Find All Anagrams in a String

Determine if Two Strings Are Close

Minimum Number of Steps to Make Two Strings Anagram II


参考资料:

https://leetcode.com/problems/minimum-number-of-steps-to-make-two-strings-anagram/

https://leetcode.com/problems/minimum-number-of-steps-to-make-two-strings-anagram/solutions/503460/java-maintain-an-array-to-record-the-occurrence-of-characters/

https://leetcode.com/problems/minimum-number-of-steps-to-make-two-strings-anagram/solutions/503450/java-python-3-count-occurrences-and-sum-the-difference-w-analysis/


LeetCode All in One 题目讲解汇总(持续更新中...)

标签:字符,映射,Make,Two,leetcode,anagram,Anagram,Strings,make
From: https://www.cnblogs.com/grandyang/p/17459335.html

相关文章

  • CMakeLists.txt 编写模板
     新建文件  CMakeLists.txt #设置cmake的最低版本cmake_minimum_required(VERSION2.8)#指定为C++11版本set(CMAKE_CXX_STANDARD11)#设置工程名称project(wss)message(${PROJECT_SOURCE_DIR})set(SRC_LIST${PROJECT_SOURCE_DIR}/src/websocket_s......
  • Achieving a Better Stability-Plasticity Trade-off via Auxiliary Networks in Cont
    摘要连续学习过程中的稳定性-可塑性权衡是一个重要的问题。作者提出了AuxiliaryNetworkContinualLearning(ANCL),通过auxiliarynetwork提高了模型的可塑性。方法TheFormulationofAuxiliaryNetworkContinualLearning传统的continuallearning方法通常是在新数据集上......
  • pycharm环境配置_network
    目录新建解释器:a.通过Virtualenv新建解释器。b.通过conda新建解释器。管理解释器新建工程配置现有解释器新建工程配置新的解释器a.新建解释器b.利用pip安装包(annconda环境或一些难安装的包)显示所有环境:condaenvlist相关问题:(1)Python出现ValueError:check_hostnamerequiresser......
  • VMWare 虚拟机安装系统出现unsuccessful EFI Network
    问题:解决方法:重新打开虚拟机内的系统就可以安装了......
  • 简单Makefile文件编写
    简单编写单个C文件的Makefile文件,文件名为demo.cdemo.c文件如下:#include<stdio.h>intmain(){printf("hello,world!\n");return0;}编写Makefile文件如下:demo:demo.ogccdemo.o-odemodemo.o:demo.cgcc-cdemo.c-odemo.oclean:rm-rf......
  • ubuntu 20.04安装(升级)cmake
    ubuntu20.04安装(升级)cmake-知乎(zhihu.com)    ......
  • Self-Supervised Hypergraph Convolutional Networks for Session-based Recommendati
    目录概符号说明HypergraphLinegraphDHCNHypergraphChannelLineGraphChannelContrastiveLearning优化代码XiaX.,YinH.,YuJ.,WangQ.,CuiLandZhangX.Self-supervisedhypergraphconvolutionalnetworksforsession-basedrecommendation.AAAI,2021.概自监......
  • Android strings.xml按照key修改
    strings.xml匹配替换将两个Android项目中的多语言字符串文件(strings.xml)进行比较,如果其中一个项目中包含另一个项目没有的字符,则合并到单一的输出文件,并以key在原始XML文件中更新value值。如果key匹配不准确则忽略它。具体来说:引入re,xml.etree.ElementTree和argpar......
  • Region Proposal Network (RPN) 架构详解
    动动发财的小手,点个赞吧!简介如果您正在阅读这篇文章,那么我假设您一定听说过用于目标检测的RCNN系列,如果是的话,那么您一定遇到过RPN,即区域提议网络。如果您不了解RCNN系列,那么我强烈建议您在深入研究RPN之前单击此处阅读这篇文章。因此我们知道,在目标检测算法中,目标是生......
  • 策马踏雪翩然过,携来人间万千烟火 ---May Part Two
    MaySolutionSetPartTwoARC160EMakeBiconnected被加粗专门强调的性质是每个点的度数最多为\(3\)。那么这一定是一棵二叉树。不妨对于每一个点考虑。删去他,最多把整棵树分为三个连通块。至少要在三个连通块中连两条边。选一个叶子做根。每个叶子一定会往外面连边,然后叶......