LeetCode75——Day22

2023-11-01 12:20
文章标签 day22 leetcode75

本文主要是介绍LeetCode75——Day22,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 一、题目
    • 二、题解

一、题目

1657. Determine if Two Strings Are Close

Two strings are considered close if you can attain one from the other using the following operations:

Operation 1: Swap any two existing characters.
For example, abcde -> aecdb
Operation 2: Transform every occurrence of one existing character into another existing character, and do the same with the other character.
For example, aacabb -> bbcbaa (all a’s turn into b’s, and all b’s turn into a’s)
You can use the operations on either string as many times as necessary.

Given two strings, word1 and word2, return true if word1 and word2 are close, and false otherwise.

Example 1:

Input: word1 = “abc”, word2 = “bca”
Output: true
Explanation: You can attain word2 from word1 in 2 operations.
Apply Operation 1: “abc” -> “acb”
Apply Operation 1: “acb” -> “bca”
Example 2:

Input: word1 = “a”, word2 = “aa”
Output: false
Explanation: It is impossible to attain word2 from word1, or vice versa, in any number of operations.
Example 3:

Input: word1 = “cabbba”, word2 = “abbccc”
Output: true
Explanation: You can attain word2 from word1 in 3 operations.
Apply Operation 1: “cabbba” -> “caabbb”
Apply Operation 2: “caabbb” -> “baaccc”
Apply Operation 2: “baaccc” -> “abbccc”

Constraints:

1 <= word1.length, word2.length <= 105
word1 and word2 contain only lowercase English letters.

题目来源: leetcode

二、题解

当两个字符串,所拥有的共同字符类型完全相同,且字母出现数目以及出现该数目的个数完全相同时,这两个字符串是close的。

class Solution {
public:bool closeStrings(string word1, string word2) {int n1 = word1.length();int n2 = word2.length();vector<int> map1(26,0);vector<int> map2(26,0);vector<int> times(max(n1,n2) + 1,0);for(int i = 0;i < n1;i++) map1[word1[i] - 'a']++;for(int i = 0;i < n2;i++) map2[word2[i] - 'a']++;//如果有字母不在交集中for(int i = 0;i < 26;i++){if((map1[i] == 0 && map2[i] != 0) || (map1[i] != 0 && map2[i] == 0)) return false;}//统计出现次数的个数for(int i = 0;i < 26;i++){if(map1[i] != 0) {times[map1[i]]++;   }}for(int i = 0;i < 26;i++){if(map2[i] != 0) times[map2[i]]--;if(times[map2[i]] < 0) return false;}return true;}
};

这篇关于LeetCode75——Day22的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/322924

相关文章

学习笔记 | 一文搞懂MySQL体系架构!!!(day22)

本文章的内容会在后面文章中慢慢讲解,该文章主要给各位博友zaipin提供学习思路,也希望大家在评论区发言表述,觉得文章有不足指出也可点评,希望大家多多支持!!! 目录  一、MySQL 1.1 数据库概述 1.2 数据库分类 1.2.1 关系型数据库 1.2.2 非关系型数据库 1.3 MySQL的安装 1.4 访问数据库服务器 1.5 SQL分类 1.6 MySQL注解

Lesson_for_java_day22--java的网络编程(IP、URL、UDP传输)

网络编程: 1、先找到对方的IP地址。 2、数据再发到对方指定的应用程序上。为了标识这些应用程序,所以给这些网络 应用程序都用数字进行标识。为了方便称呼这个数字,就叫端口(逻辑端口) 3、定义通信规则。这个通信规则成为协议。国际组织定义了通用协议:TCP/IP。 网络总结: 1、TCP/IP协议既然是网络编程,涉及几个系统之间的交互,那么首先要考虑的是如何准确的定位到网络上的一台或几台

代码随想录算法day22 | 回溯算法part04 | 491.递增子序列,46.全排列,47.全排列 II

491.递增子序列 本题和大家做过的 90.子集II 非常像,但又很不一样,很容易掉坑里。 力扣题目链接(opens new window) 给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2。 示例: 输入: [4, 6, 7, 7]输出: [[4, 6], [4, 7], [4, 6, 7], [4, 6, 7, 7], [6, 7], [

游戏心理学Day22

为儿童设计游戏的原则 为儿童设计游戏的第一条原则是游戏世界必须符合逻辑且有意义,为儿童开发游戏对设计师来说绝对是重大挑战,因为儿童是最苛刻的玩家之一。 如果儿童喜欢并沉浸于我们的游戏,那么他们能够毫不费力的跳出游戏中的任何一点点瑕疵,如果我们的游戏缺点太多,他们就更可能直接批评并列举我们的错误,例如我们创造了一个不符合逻辑的游戏世界,让一这只兔子在海边奔跑,一只防止从沙子中跃起的螃蟹用夹子夹

代码随想录算法训练营Day22|235. 二叉搜索树的最近公共祖先 ,701.二叉搜索树中的插入操作 ,450.删除二叉搜索树中的节点

235. 二叉搜索树的最近公共祖先:代码随想录 这道题目的意思和前面的二叉树的最近公共祖先一样,只不过是换成了二叉搜索树,我采用的方法还是和普通二叉树一样,利用回溯的方法,来看具体代码的实现 class Solution {public:TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {if

代码随想录算法训练营day22|701.二叉搜索树中的插入操作、 450.删除二叉搜索树中的节点、 235. 二叉搜索树的最近公共祖先

701.二叉搜索树中的插入操作 这道题较为简单,只需要通过递归找到符合要求的叶子节点,并将节点插入即可。 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* T

每日5题Day22 - LeetCode 106 - 110

每一步向前都是向自己的梦想更近一步,坚持不懈,勇往直前! 第一题:106. 从中序与后序遍历序列构造二叉树 - 力扣(LeetCode) class Solution {public TreeNode buildTree(int[] inorder, int[] postorder) {Map<Integer, Integer> map = new HashMap<>();//把中序每个点

代码随想录算法训练营Day22|235.二叉搜索树的最近公共祖先、701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点

二叉搜索树的最近公共祖先 不考虑二叉搜索树这一条件的话,普通的二叉搜索树搜索最近的公共祖先就是昨日的做法,这种做法也能解决二叉搜索树的最近公共祖先。 class Solution {public:TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {// 如果当前节点为空,或者等于p或q,直接返回当

代码随想录-Day22

235. 二叉搜索树的最近公共祖先 方法一:两次遍历 class Solution {public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {List<TreeNode> path_p = getPath(root, p);List<TreeNode> path_q = getPath(root,

C++笔试强训day22

目录 1.添加字符 2.数组变换 3.装箱问题 常规一维优化: 1.添加字符 链接 因为lenA  <= lenB <= 50,因此可以无脑暴力解题: 遍历所有符合条件的匹配方法,找出最小的不同的数量,即最大的相同的数量 #include <iostream>using namespace std;int main() {string A;string B;c