【哈希】Leetcode 383. 贖金信【簡單】

贖金信

  • 給你兩個字符串:ransomNote 和 magazine ,判斷 ransomNote 能不能由 magazine 里面的字符構成。

  • 如果可以,返回 true ;否則返回 false 。

magazine 中的每個字符只能在 ransomNote 中使用一次。

解題思路

可以使用哈希表來解決這個問題。

  • 1、首先遍歷 magazine,將每個字符及其出現次數存儲在哈希表中。
  • 2、 遍歷 ransomNote,對于每個字符,在哈希表中查找其出現次數,如果出現次數大于 0, 則將其出現次數減 1;如果出現次數為 0 或者字符在哈希表中不存在,則返回 false。
  • 3、 如果遍歷完成,則返回 true。

Java實現

public class RansomNote {public boolean canConstruct(String ransomNote, String magazine) {Map<Character, Integer> charCounts = new HashMap<>();// 統計 magazine 中每個字符的出現次數for (char ch : magazine.toCharArray()) {charCounts.put(ch, charCounts.getOrDefault(ch, 0) + 1);}// 遍歷 ransomNote,檢查每個字符是否能在 magazine 中找到for (char ch : ransomNote.toCharArray()) {if (!charCounts.containsKey(ch) || charCounts.get(ch) == 0) {return false;}charCounts.put(ch, charCounts.get(ch) - 1);}return true;}public static void main(String[] args) {RansomNote ransomNote = new RansomNote();String ransomNote1 = "a", magazine1 = "b";System.out.println("Test Case 1:");System.out.println("ransomNote: \"a\", magazine: \"b\"");System.out.println("Result: " + ransomNote.canConstruct(ransomNote1, magazine1)); // Expected: falseString ransomNote2 = "aa", magazine2 = "ab";System.out.println("\nTest Case 2:");System.out.println("ransomNote: \"aa\", magazine: \"ab\"");System.out.println("Result: " + ransomNote.canConstruct(ransomNote2, magazine2)); // Expected: false}
}

時間空間復雜度

  • 時間復雜度: 遍歷 magazine 字符串并統計字符出現次數的時間復雜度為 O(m),遍歷 ransomNote 字符串并檢查是否能在 magazine 中找到的時間復雜度為 O(n),總體時間復雜度為 O(m+n)
  • 空間復雜度: 使用了哈希表來存儲 magazine 中每個字符的出現次數,空間復雜度為 O(m),其中 m 是 magazine 字符串的長度。

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

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

相關文章

matlab進行濾波處理

在MATLAB中進行濾波處理&#xff0c;你可以使用內置的函數或自定義濾波器。以下是一些常見的方法&#xff1a; 1. 使用內置濾波器函數 MATLAB提供了多種內置濾波器函數&#xff0c;如filter&#xff0c;filtfilt&#xff0c;butter&#xff08;用于設計巴特沃斯濾波器&#x…

spark結課之tip2

spark常用方法總結&#xff1a; 一、從內部創建RDD (1).通過并行化集合&#xff08;Parallelized Collections&#xff09;&#xff1a; 可以使用SparkContext的parallelize方法將一個已有的集合轉換為RDD。 基本語法&#xff1a; parallelize(collection, numSlicesNone)…

AI系列:大語言模型的RAG(檢索增強生成)技術(下)-- 使用LlamaIndex

目錄 前言什么是LlamaIndex?LlamaIndex代碼設置embedding模型設置LLM模型索引查詢機 驗證使用感受參考資料 前言 繼上一篇文章AI系列&#xff1a;大語言模型的RAG&#xff08;檢索增強生成&#xff09;技術&#xff08;上&#xff09;&#xff0c;這篇文章主要以LlamaIndex為…

銀行業數據運營場景下的數據埋點方案

1、引言 隨著金融科技的快速發展&#xff0c;銀行業的數據運營變得日益重要。數據埋點作為數據收集的重要手段&#xff0c;對于銀行業務的精細化運營、風險管理和產品迭代等方面起著至關重要的作用。本方案將針對銀行業數據運營場景&#xff0c;設計一套完整的數據埋點方案&am…

【生信技能樹】GEO數據挖掘全流程

R包的安裝&#xff0c;每次做分析的時候先運行這段代碼把R包都安裝好了&#xff0c;這段代碼不需要任何改動&#xff0c;每次分析直接運行。 options("repos""https://mirrors.ustc.edu.cn/CRAN/") if(!require("BiocManager")) install.packag…

思源筆記如何結合群暉WebDav實現云同步數據

文章目錄 1. 開啟群暉WebDav 服務2. 本地局域網IP同步測試3. 群暉安裝Cpolar4. 配置遠程同步地址5. 筆記遠程同步測試6. 固定公網地址7. 配置固定遠程同步地址 在數字化時代&#xff0c;信息的同步與共享變得尤為重要。無論是個人用戶還是企業團隊&#xff0c;都渴望能夠實現跨…

nginx 代理java 請求報502

情況&#xff1a;nginx代理java 請求 后端返回正常&#xff0c;但是經過nginx 時報502 經過多次對比其他接口發現可能是返回的請求頭過大&#xff0c;導致nginx 報錯&#xff1a;如下 2024/05/13 02:57:12 [error] 88#88: *3755 upstream sent too big header while reading r…

創建存儲過程

一、DDL與DML CREATE TABLE student (id INT PRIMARY KEY AUTO_INCREMENT,createDate DATETIME NOT NULL,userName VARCHAR(255) NOT NULL,phone VARCHAR(20) NOT NULL,age INT NOT NULL,sex ENUM(男, 女) NOT NULL,introduce TEXT ); INSERT INTO student (createDate, userN…

透明加密軟件推薦:哪款實用又高效?

透明加密軟件是一種專門針對文件保密需求的計算機加密工具。 其核心在于“透明”二字&#xff0c;意味著整個加密過程對于使用者來說是無形且無感知的。 當用戶進行文件的日常操作&#xff0c;如打開、編輯或保存時&#xff0c;透明加密軟件會在后臺自動進行加密和解密工作&a…

【算法刷題day52】Leetcode:300. 最長遞增子序列、674. 最長連續遞增序列、718. 最長重復子數組

文章目錄 Leetcode 300. 最長遞增子序列解題思路代碼總結 Leetcode 674. 最長連續遞增序列解題思路代碼總結 Leetcode 718. 最長重復子數組解題思路代碼總結 草稿圖網站 java的Deque Leetcode 300. 最長遞增子序列 題目&#xff1a;300. 最長遞增子序列 解析&#xff1a;代碼隨…

Keil編程不同驅動文件引用同一個常量的處理方法

基礎不牢&#xff0c;地動山搖&#xff0c;最近單片機編程又遇到一個基礎問題。 我在頭文件中定義了一個常量同時給兩個驅動文件使用&#xff0c;封裝的時候編譯沒問題&#xff0c;但是在main函數中引用驅動函數的時候就出現了重定義的問題&#xff0c;如下如所示。 解決方法很…

Windows 11 下 kafka 的安裝踩坑

安裝 windows系統kafka小白入門篇——下載安裝&#xff0c;環境配置&#xff0c;入門代碼書寫&#xff08;推薦&#xff09; kafka在windows下安裝和使用入門教程 問題1 參考鏈接 運行kafka集成的zookeeper時&#xff0c;命令&#xff1a;bin\windows\zookeeper-server-star…

05. 【Java教程】第一個 Java 程序

本節我們將以Windows操作系統為例&#xff0c;編寫并執行第一個Java程序。在這之前&#xff0c;請確保你的操作系統上已經安裝了JDK 1. 編譯程序 大家可能有個疑問&#xff0c;為什么需要編譯程序呢&#xff1f;計算機不能直接執行我們編寫的源代碼嗎&#xff1f; 這是由于計…

指針由淺入深

1.變量與地址 2.指針與指針變量 3.直接訪問和間接訪問 4.空指針與野指針 5.空類型 6.定義與初始化的書寫規則 7.指針運算 8.指針與數組 指針與一維數組 指針與二維數組 指針與字符數組 9.const與指針 10.指針數組和數組指針 11.多級指針 #include<stdio.h> #include<…

CPU利用率使用教程

本文主要參考&#xff1a; 一文讓你學到 nmon最詳盡的用法 Linux性能監控命令_nmon 安裝與使用 如果你是在Ubuntu上安裝nmon&#xff0c;使用&#xff1a; apt install nmon安裝好后&#xff0c;直接運行 $:nmon #運行如果是后臺抓數據&#xff1a; -f 參數: 生成文件,文件…

python 虛擬環境多種創建方式

【一】說明介紹 &#xff08;1&#xff09;什么是虛擬環境 在Python中&#xff0c;虛擬環境&#xff08;Virtual Environment&#xff09;是一個獨立的、隔離的Python運行環境&#xff0c;它擁有自己的Python解釋器、第三方庫和應用程序。通過創建虛擬環境&#xff0c;可以確…

【刷題(2)】矩陣

一、矩陣問題基礎 遍歷&#xff1a; for i in range(len(matrix[0])): for j in range(len(matrix): while 倒序遍歷&#xff1a; for i in range(right,left,-1) 臨時存儲&#xff1a;temp w,h:len(matrix[0])-1 len(matrix)-1 left,right,top,bottom:0 len(matrix[0])-1 0 l…

Cesium 3DTileset Style 原理簡析

Cesium 3DTileset Style 原理簡析 應用層會看到這樣的使用。那么原理是什么, 為啥寫 height, 除了這個還有啥? const tileset await Cesium.Cesium3DTileset.fromUrl("../../public/tileset/building/tileset.json"); tileset.style new Cesium.Cesium3DTileSty…

HarmonyOS應用模型Stage基本介紹

文章目錄 <font colorcoral> HarmonyOS應用模型概況<font colorcoral> Stage模型基本概念<font colorcoral> Stage模型UIAbiliry的生命周期<font colorcoral> Stage模型的配置文件<font colorcoral> 寫在后面的話<font colorcoral>Referen…