哈希表、HashMap\Map-1657. 確定兩個字符串是否接近

題目鏈接及描述

1657. 確定兩個字符串是否接近 - 力扣(LeetCode)

題目分析

? ? ? ? 今日看到這道題目,乍一看覺得非常熟悉,對于將一個字符串轉換為另一個字符串的題目之前做過一些。分析題目,題目中所述就是兩種操作:

  1. 將一個字符和另一個字符的位置交換。
  2. 對于兩個個數不一樣的字符,可以將字符A變為字符B,同時將字符B變為字符A。字符個數無所謂。

? ? ? ? 以上所述兩種變換可以用一句話概括,對于一個字符串中的任意兩種類型的字符,無論字符個數是否相同,都可以將類型A對應的字符變為類型B對應的字符,同時對類型B所對應的字符轉換為類型A所對應的字符。【類型A的所有字符必須和類型B的所有字符對換,不管個數是否相同】

? ? ? ? aacabb -----?將a變為b,b變為a,字符對應的個數和位置保持不變-----> bbcbaa

? ? ? ? 由于字符具有傳遞性,所以任意字符都可以變換,上述a和b替換之后,a和c,b和c也可以替換。

? ? ? ? 基于上面分析,本題只要掌握以下兩點就可以解決。

  1. word1中出現的字符必須在word2中出現(不討論個數),word2中出現的字符必須在word1中出現=》word1和word2中所出現的字符必須相等,否則無論如何交換字符不可能創造新字符。
  2. word1中某個字符出現的次數 count 在word2中必須有對應的某個字符出現的次數也為 count。?

? ? ? ? ?能夠分析出以上兩點就可以構造map進行代碼分別,map中的key為對應的字符ch,value為字符ch在字符串中出現的次數。

? ? ? ? 重點在于第二點如何實現,我的思路是構造好map之后,獲取value構造一個int類型的數組,隨后對數組進行升序排序,之后依序比較排序后的兩個int數組的每一位元素是否相等,如果不等則不滿足第2點,直接返回false,遍歷完沒有返回則此時返回true,能夠實現題目要求。

代碼編寫

class Solution {public boolean closeStrings(String word1, String word2) {if(word1.length() != word2.length()){return false;}Map<Character, Integer> map1 = new HashMap<>();Map<Character, Integer> map2 = new HashMap<>();for(char ch : word1.toCharArray()){map1.put(ch, map1.getOrDefault(ch, 0) + 1);}for(char ch : word2.toCharArray()){if(!map1.containsKey(ch)){return false;}map2.put(ch, map2.getOrDefault(ch, 0) + 1);}if(map1.size() != map2.size()){return false;}int[] arr1 = new int[map1.size()];int[] arr2 = new int[map2.size()];int idx = 0;for(int cnts : map1.values()){arr1[idx++] = cnts;}idx = 0;for(int cnts : map2.values()){arr2[idx++] = cnts;}Arrays.sort(arr1);Arrays.sort(arr2);for(int i = 0; i < arr1.length; i++){if(arr1[i] != arr2[i]){return false;}}return true;}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/22952.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/22952.shtml
英文地址,請注明出處:http://en.pswp.cn/web/22952.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ubuntu藍牙連接問題

ubuntu藍牙連接問題 ubuntu藍牙連接問題1、安裝驅動2、優化藍牙配置文件3、解決 Failed to connect: org.bluez.Error.Failed ubuntu藍牙連接問題 之前我發現電腦有藍牙圖標&#xff0c;且能打開關閉&#xff0c;就以為藍牙默認已經配置好了&#xff0c;直到有一天我嘗試連接我…

嵌入式軟件跳槽求指導?

嵌入式軟件行業的跳槽確實需要一些特定的策略和技巧。我這里有一套嵌入式入門教程&#xff0c;不僅包含了詳細的視頻講解&#xff0c;項目實戰。如果你渴望學習嵌入式&#xff0c;不妨點個關注&#xff0c;給個評論222&#xff0c;私信22&#xff0c;我在后臺發給你。 因為這個…

【設計模式】裝飾器模式(結構型)??

文章目錄 1.概念1.1 什么是裝飾器模式1.2 優點與缺點 2.實現方式3. Java 哪些地方用到了裝飾器模式4. Spring 哪些地方用到了裝飾器模式 1.概念 1.1 什么是裝飾器模式 它允許用戶在不修改現有對象的代碼的情況下向對象添加新的功能&#xff1b;這種模式是通過創建一個包含該對…

前端面試題日常練-day53 【面試題】

題目 希望這些選擇題能夠幫助您進行前端面試的準備&#xff0c;答案在文末 1. 在PHP中&#xff0c;以下哪個函數可以用于從一個數組的末尾刪除一個元素并返回被刪除的元素&#xff1f; a) array_pop() b) array_push() c) array_shift() d) array_unshift() 2. 在PHP中&…

列存在 OceanBase 數據庫架構中的應用與演進

OceanBase 4.3 版本上線了列存功能&#xff0c;以滿足實時分析的需求。 本文作為《特性解讀&#xff1a;列存技術》的后續&#xff0c;將詳細闡述列存技術在OceanBase數據庫架構中的應用、發展歷程&#xff0c;以及未來的趨勢。 一、前言 1970 年&#xff0c;關系模型之父 Co…

LeakSearch:針對網絡公開憑證的安全掃描與檢測工具

關于LeakSearch 在紅隊演戲過程中&#xff0c;往往需要獲取到針對目標域的訪問權限。在這個過程中&#xff0c;很多紅隊人員會選擇使用暴露在互聯網上的代理服務器來實現目標域的訪問&#xff0c;那么此時就需要在互聯網上收集公開暴露的憑證信息。 對于藍隊來說&#xff0c;…

Playwright+Python+Pytest:基礎方法二次封裝簡化及鏈式調用

引言 隨著Web應用的日益復雜化&#xff0c;自動化測試成為了確保軟件質量的關鍵環節。Playwright 是一個強大的自動化庫&#xff0c;它支持在 Chromium、Firefox 和 WebKit 中運行自動化腳本。本文將介紹如何使用 Playwright 的 Python 同步 API 來簡化點擊和填充操作&#xf…

阿里云郵件推送配置教程:API配置的步驟?

阿里云郵件推送服務如何使用&#xff1f;如何配置郵件推送服務&#xff1f; 阿里云提供了強大的郵件推送服務&#xff0c;幫助企業高效地發送郵件通知、驗證碼、營銷活動等。Aok將詳細介紹阿里云郵件推送的配置教程&#xff0c;以及API配置的步驟&#xff0c;同時簡要提及AokS…

數據流圖要點和難點實際應用

數據流圖(Data Flow Diagram,DFD)是一種圖形化表示信息系統中數據流動和處理的方式。它主要用于描述系統如何接收輸入數據,經過一系列的處理步驟,然后產生輸出數據。數據流圖在系統設計階段特別有用,因為它可以幫助開發人員、業務分析師和其他利益相關者更好地理解系統的…

Python字符串數據類型之字符串

四、Python數據類型 4.1、Python內置數據類型 整型&#xff1a;int浮點型&#xff1a;float布爾類型&#xff1a;bool字符串&#xff1a;str二進制類型&#xff1a;bytes、bytearray復數&#xff1a;complex列表&#xff1a;list元組&#xff1a;tuple字典&#xff1a;dict a…

C#WPF控件Textbox綁定浮點型數據限制小數位方法

本文講解C#WPF控件Textbox綁定浮點型數據限制小數位方法。 XAML中,使用StringFormat來格式化TextBox的文本 <Window x:Class="WpfApp.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.m…

【使用 uiautomator2 腳本進行波點音樂app自動化操作的教程】

本教程將指導您使用 uiautomator2 庫編寫腳本&#xff0c;實現自動化操作。如果您需要在設備斷開連接或出現異常時重新連接設備并繼續執行任務&#xff0c;這里有一份詳細的代碼示例和使用說明。 環境準備 安裝 Python&#xff1a; 確保您的系統上安裝了 Python&#xff08;推…

[數據集][目標檢測]盲道檢測數據集VOC+YOLO格式2173張1類別

數據集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路徑的txt文件&#xff0c;僅僅包含jpg圖片以及對應的VOC格式xml文件和yolo格式txt文件) 圖片數量(jpg文件個數)&#xff1a;2173 標注數量(xml文件個數)&#xff1a;2173 標注數量(txt文件個數)&#xff1a;2173 標注…

基于R語言BIOMOD2 及機器學習方法的物種分布模擬與案例分析實踐技術

BIOMOD2是一個R軟件包&#xff0c;用于構建和評估物種分布模型&#xff08;SDMs&#xff09;。它集成了多種統計和機器學習方法&#xff0c;如GLM、GAM、SVM等&#xff0c;允許用戶預測和分析物種在不同環境條件下的地理分布。通過這種方式&#xff0c;BIOMOD幫助研究者評估氣候…

常用接口測試及接口抓包常用的測試工具

一、常用抓包工具 01、F12 Web端的話&#xff0c;google瀏覽器直接F12開發者模式 點擊network進行抓包分析。 02、Fiddler抓包工具 客戶端和服務端的http代理&#xff0c;客戶端所有的請求都要先經過Fiddler&#xff0c;到響應的服務端&#xff0c;然后端返回的所有數據也都…

pytorch數學操作

文章目錄 1.torch.bitwise_not()2.torch.bitwise_and()3.torch.ceil()3.torch.clamp()4.torch.torch.floor() 1.torch.bitwise_not() 在 PyTorch 中&#xff0c;torch.bitwise_not() 是一個函數&#xff0c;用于執行逐元素的位非&#xff08;bitwise NOT&#xff09;操作。 t…

如何組織基于Sqlalchemy的項目

在使用 SQLAlchemy 構建項目時&#xff0c;可以遵循一些常用的組織結構和最佳實踐&#xff0c;以確保項目清晰、易于維護。下面就是我在構建項目時遇到的一些問題&#xff0c;并做了詳細的記錄&#xff0c;為了方便大家學習少走一些彎路。 1、問題背景 在基于Sqlalchemy的項目…

IDEA的使用配置Maven(及selenium+webdriver的下載配置)

一. 下載maven 1. maven官網下載鏈接 2.??安裝第二行第一列的zip壓縮包 ???????? 二. 配置環境變量 1.新建環境變量 2.在系統變量Path環境變量中添加%Maven_HOME%\bin 三.驗證環境變量是否配置成功 winr >cmd>mvn -v 如果出現Maven的版本信息&#xff0…

Matlab解決矩陣微分方程建模(代碼開源)

#用matlab解決施密特正交規范化矩陣之后&#xff0c;我又想到矩陣的微分方程計算量真的太大了&#xff0c;來回轉化讓我頭大&#xff0c;于是我嘗試了一下用matlab建立模型來解決這類問題。 代碼部分如下&#xff1a;注解還挺清晰的&#xff1a; %%%解微分方程組%eg&#xff…

【設計模式】代理模式(結構型)???

文章目錄 1.概念1.1 什么是代理模式1.2 優點與缺點 2.實現方式2.1 靜態代理2.2 動態代理 3. Java 哪些地方用到了代理模式4. Spring 哪些地方用到了代理模式 1.概念 1.1 什么是代理模式 代理模式&#xff08;Proxy Pattern&#xff09;是一種結構型設計模式&#xff0c;它允許…