贖金信[簡單]

優質博文:IT-BLOG-CN
在這里插入圖片描述

一、題目

給你兩個字符串:ransomNotemagazine,判斷ransomNote能不能由magazine里面的字符構成。如果可以,返回true;否則返回falsemagazine中的每個字符只能在ransomNote中使用一次。

示例 1:
輸入:ransomNote = "a", magazine = "b"
輸出:false

示例 2:
輸入:ransomNote = "aa", magazine = "ab"
輸出:false

示例 3:
輸入:ransomNote = "aa", magazine = "aab"
輸出:true

1 <= ransomNote.length, magazine.length <= 105
ransomNotemagazine由小寫英文字母組成

二、代碼

【1】Map: 創建一個Map,key存放magazine字符,value存放count, 遍歷ransomNotecount進行減小,如果小于0,說明不包含直接退出。

class Solution {public boolean canConstruct(String ransomNote, String magazine) {// 創建一個Map, key 存放 magazine 字符,value存放count, 遍歷 ransomNote 對 count進行減小,如果小于0,說明不包含Map<Character, Integer> map = new HashMap();for (int i = 0; i < magazine.length(); i++) {map.put(magazine.charAt(i), map.getOrDefault(magazine.charAt(i), 0) + 1);}for (int i = 0; i < ransomNote.length(); i++) {int count = map.getOrDefault(ransomNote.charAt(i), 0);map.put(ransomNote.charAt(i), --count);if (count < 0) {return false;}}return true;}
}

時間復雜度: O(m+n)其中m表示ransomNote的長度,n表示magazine的長度。
空間復雜度: O(m)其中m表示ransomNote的長度。

【2】字符統計: 如果字符串magazine的長度小于字符串ransomNote的長度,則我們可以肯定magazine無法構成ransomNote,此時直接返回false。首先統計magazine中每個英文字母a的次數cnt[a],再遍歷統計ransomNote中每個英文字母的次數,如果發現ransomNote中存在某個英文字母c的統計次數大于magazine中該字母統計次數cnt[c],則此時我們直接返回false

class Solution {public boolean canConstruct(String ransomNote, String magazine) {if (ransomNote.length() > magazine.length()) {return false;}// 創建一個26個字母長度的數組,下標表示字母,value表示個數int[] letter = new int[26];for (char c : magazine.toCharArray()) {letter[c - 'a']++;}for (char c : ransomNote.toCharArray()) {letter[c - 'a']--;if (letter[c - 'a'] < 0) {return false;}}return true;}
}

時間復雜度: O(m+n)其中m是字符串ransomNote的長度,n是字符串magazine的長度,我們只需要遍歷兩個字符一次即可。
空間復雜度: O(∣S∣)S是字符集,這道題中S為全部小寫英語字母,因此∣S∣=26

【3】哈希表或數組: 我們可以用一個哈希表或長度為26的數組cnt記錄字符串magazine中所有字符出現的次數。然后遍歷字符串ransomNote,對于其中的每個字符c,我們將其從cnt的次數減1,如果減1之后的次數小于0,說明cmagazine中出現的次數不夠,因此無法構成ransomNote,返回false即可。

否則,遍歷結束后,說明ransomNote中的每個字符都可以在magazine中找到對應的字符,因此返回true

class Solution {public boolean canConstruct(String ransomNote, String magazine) {int[] cnt = new int[26];for (int i = 0; i < magazine.length(); ++i) {++cnt[magazine.charAt(i) - 'a'];}for (int i = 0; i < ransomNote.length(); ++i) {if (--cnt[ransomNote.charAt(i) - 'a'] < 0) {return false;}}return true;}
}

時間復雜度: O(m+n),其中mn分別為字符串ransomNotemagazine的長度;
空間復雜度: O(C),而C為字符集的大小,本題中C = 26

【4】枚舉:26字母中出現的字母全部統計一遍到數組中,然后遍歷我們組成字符串(字符串轉成字符數組),對出現的字母相減,減出來到最后,數組中沒有出現小于0的數就是可以組成,相反不能組成

class Solution {public static boolean canConstruct(String ransomNote, String magazine) {int [] ans = new int[26];// 將字符串中的字符轉換為字符數組for(char c : magazine.toCharArray()){// 26個字母 出現多少次ans[c-'a']++;}for (char c : ransomNote.toCharArray()){if(--ans[c - 'a'] < 0){return false;}}return true;}
}

時間復雜度: O(1)
空間復雜度: O(1)

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

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

相關文章

DPDK實踐之(1)dpdk基礎使用

DPDK實踐之(1)dpdk基礎使用 Author: Once Day Date: 2024年5月19日 一位熱衷于Linux學習和開發的菜鳥&#xff0c;試圖譜寫一場冒險之旅&#xff0c;也許終點只是一場白日夢… 漫漫長路&#xff0c;有人對你微笑過嘛… 全系列文檔可參考專欄&#xff1a;Linux基礎知識_Once…

java判斷日期格式的正則表達式

java判斷日期格式的正則表達式 在Java中&#xff0c;你可以使用String類的matches()方法來檢查一個字符串是否匹配特定的正則表達式。以下是一個用于判斷日期格式是否為YYYY-MM-DD的正則表達式的例子&#xff1a; public class DateValidator { public static boolean isVal…

C語言 | Leetcode C語言題解之第109題有序鏈表轉換二叉搜索樹

題目&#xff1a; 題解&#xff1a; int getLength(struct ListNode* head) {int ret 0;while (head ! NULL) {ret, head head->next;}return ret; }struct TreeNode* buildTree(struct ListNode** head, int left, int right) {if (left > right) {return NULL;}int …

Mac維護神器CleanMyMac X成為你的蘋果電腦得力助手

在數字化時代&#xff0c;Mac電腦已成為眾多用戶的首選。然而&#xff0c;隨著頻繁的使用和數據量的日益增長&#xff0c;許多Mac用戶面臨著系統雜亂、存儲空間不足以及隱私保護等問題。幸運的是&#xff0c;"CleanMyMac X"這款優化和清理工具應運而生&#xff0c;它…

ROCm上情感分析:使用循環神經網絡

15.2. 情感分析&#xff1a;使用循環神經網絡 — 動手學深度學習 2.0.0 documentation (d2l.ai) 代碼 import torch from torch import nn from d2l import torch as d2lbatch_size 64 train_iter, test_iter, vocab d2l.load_data_imdb(batch_size)class BiRNN(nn.Module):…

java抽象類,接口,枚舉練習題

第一題&#xff1a; 答案&#xff1a; class Animal{//成員變量protected String name;protected int weight;//構造方法public Animal(){this.name"refer";this.weight50;}public Animal(String name,int weight){this.namename;this.weightweight;}//成員方法publ…

Bugku Crypto 部分題目簡單題解(四)

目錄 python_jail 簡單的rsa 托馬斯.杰斐遜 這不是md5 進制轉換 affine Crack it rsa python_jail 啟動場景 使用虛擬機nc進行連接 輸入print(flag) 發現報錯&#xff0c;經過測試只能傳入10個字符多了就會報錯 利用python中help()函數&#xff0c;借報錯信息帶出flag變…

【力扣刷題筆記第三期】Python 數據結構與算法

先從簡單的題型開始刷起&#xff0c;一起加油啊&#xff01;&#xff01; 點個關注和收藏唄&#xff0c;一起刷題鴨&#xff01;&#xff01; 第一批題目 1.設備編號 給定一個設備編號區間[start, end]&#xff0c;包含4或18的編號都不能使用&#xff0c;如&#xff1a;418、…

對于map的新應用

題源codeforces1974 problemC 題目大意 定義當兩個三元組A和B中&#xff0c;滿足三元組中有且僅有兩個元素相等&#xff0c;比如 a 1 b 1 , a 2 b 2 , a 3 ! b 3 a_1b_1,a_2b_2,a_3!b_3 a1?b1?,a2?b2?,a3?!b3? 這只是一種情況&#xff0c;三種情況之一 解題思路 …

java抽象類和接口知識總結

一.抽象類 1.啥是抽象類 用專業語言描述就是&#xff1a;如果一個類中沒有包含足夠的信息來描繪一個具體的對象&#xff0c;這樣的類就是抽象類 當然這話說的也很抽象&#xff0c;所以我們來用人話來解釋一下抽象類 拋開編程語言這些&#xff0c;就以現實舉例&#xff0c;我…

每日練習之排序——鏈表的合并;完全背包—— 兌換零錢

鏈表的合并 題目描述 運行代碼 #include<iostream> #include<algorithm> using namespace std; int main() { int a[31];for(int i 1;i < 30;i)cin>>a[i];sort(a 1,a 1 30);for(int i 1;i < 30;i)cout<<a[i]<<" ";cout&…

Mysql之Innodb存儲引擎

1.Innodb數據存儲 innodb如今能夠做到mysql的默認數據存儲引擎&#xff0c;肯定有著其好處的&#xff0c;那么innodb有什么好處呢? 1. 當意外斷電或者重啟&#xff0c; InnoDB 能夠做到奔潰恢復&#xff0c;撤銷沒有提交的數據 2.InnoDB 存儲引擎維護自己的緩沖池&#xff0c…

UDS(ISO 14229)學習筆記

文章目錄 名詞縮寫Vector視頻筆記$10$27Fault Memory物理尋址和功能尋址UDS服務分類0x19服務0x14DTC汽車控制器(ECU)中DTC的狀態位物理尋址和功能尋址單幀 多幀 首幀 連續幀名詞縮寫 DTC Diagnostic Trouble Code FTB Fault Type Byte SID Service Identifier SF Subfunctio…

DML(Data Manipulation Language)數據操作語言

一、增加 insert into -- 寫全所有列名 insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n);-- 不寫列名&#xff08;所有列全部添加&#xff09; insert into 表名 values(值1,值2,...值n);-- 插入部分數據 insert into 表名(列名1,列名2) values(值1,值2); 舉…

醫院掛號就診系統的設計與實現

前端使用Vue.js 后端使用SpiringBoot MyBatis 數據使用MySQL 需要項目和論文加企鵝&#xff1a;2583550535 醫院掛號就診系統的設計與實現_嗶哩嗶哩_bilibili 隨著社會的發展&#xff0c;醫療資源分布不均&#xff0c;患者就診難、排隊時間長等問題日益突出&#xff0c;傳統的…

軟考備考三

操作系統 操作系統概述 功能&#xff1a;組織和管理軟件&#xff0c;硬件資源以及計算機系統中的工作流程&#xff0c;控制程序的執行&#xff0c;向用戶提供接口。 分類&#xff1a; 1.批處理操作系統 單道批 多道批&#xff08;宏觀上并行&#xff0c;微觀上串行&#xff09…

Hadoop3:HDFS的Fsimage和Edits文件介紹

一、概念 Fsimage文件&#xff1a;HDFS文件系統元數據的一個永久性的檢查點&#xff0c;其中包含HDFS文件系統的所有目 錄和文件inode的序列化信息。 Edits文件&#xff1a;存放HDFS文件系統的所有更新操作的路徑&#xff0c;文件系統客戶端執行的所有寫操作首先 會被記錄到Ed…

K8s 身份認證和權限

文章目錄 K8s 身份認證和權限認證Service AccountsService Account Admission ControllerToken ControllerService Account Controller 授權(RBAC)RoleClusterRoleRoleBindingClusterRoleBinding K8s 身份認證和權限 Kubernetes 中提供了良好的多租戶認證管理機制&#xff0c;…

二叉樹的鏈式結構

1.二叉樹的遍歷 2.二叉樹鏈式結構的實現 3.解決單值二叉樹題 1.二叉樹的遍歷 1.1前序&#xff0c;中序以及后序遍歷 二叉樹的遍歷是按照某種特定的規則&#xff0c;依次對二叉樹的結點進行相應的操作&#xff0c;并且每個結點只操作一次。 二叉樹的遍歷有這些規則&#xff…

主流電商平臺商品實時數據采集API接口||抖音電商數據分析實例|可視化

— 1 — 抖音電商數據【抖音電商API數據采集】分析場景 1. 這里&#xff0c;我們選擇“伊利”這個品牌作為案例進行分析&#xff0c;在短短的4個月里&#xff0c;從最初每月營收17.07萬&#xff0c;到6月份達到了2485.54 萬&#xff0c;伊利的牛奶&#xff0c;有點牛&#xff…