女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

判斷兩個字符串中的字母是否一致

算法與數(shù)據(jù)結構 ? 來源:吳師兄學算法 ? 作者:吳師兄學算法 ? 2022-08-05 11:49 ? 次閱讀

大家好,我是吳師兄

今天的題目來源于 LeetCode 第 242 號問題:有效的字母異位詞,難度為「簡單」。

一、題目描述

給定兩個字符串st,編寫一個函數(shù)來判斷t是否是s的字母異位詞。

注意:st中每個字符出現(xiàn)的次數(shù)都相同,則稱st互為字母異位詞。

示例 1:

輸入:s="anagram",t="nagaram"
輸出:true

示例 2:

輸入:s="rat",t="car"
輸出:false

提示:

  • 1 <= s.length, t.length <= 5 * 104
  • st僅包含小寫字母

進階:如果輸入字符串包含 unicode 字符怎么辦?你能否調整你的解法來應對這種情況?

二、題目解析

題目講的是讓你判斷兩個字符串中的字母是否一致,比如示例1中,s包含字母a、n、g、r、m,而t中也包含a、n、g、r、m,都是只有這五個字母,并且頻次相同,只是順序不同。

看到頻次這個詞,你腦海中第一想法是什么?

沒錯,就是哈希表

解法思路很簡單。

1、首先先判斷兩個字符串長度是否相同,不相同直接返回false

2、然后把s中所有的字符出現(xiàn)個數(shù)使用計數(shù)器統(tǒng)計起來,存入一個大小為 26 的數(shù)組中(注意題目的說明)

2bfac0ea-1471-11ed-ba43-dac502259ad0.png

3、最后再來統(tǒng)計t字符串,即遍歷t時將對應的字母頻次進行減少,如果期間 計數(shù)器出現(xiàn)小于零的情況,則說明t中包含一個不存在于s中的字母,直接返回false

2c1f3bbe-1471-11ed-ba43-dac502259ad0.png

4、最后檢查計數(shù)器是否歸零。

三、參考代碼

1、Java 代碼

//登錄AlgoMooc官網(wǎng)獲取更多算法圖解
//https://www.algomooc.com
//作者:程序員吳師兄
//代碼有看不懂的地方一定要私聊咨詢吳師兄呀
//有效的字母異位詞(LeetCode 242):https://leetcode.cn/problems/valid-anagram/
classSolution{
publicbooleanisAnagram(Strings,Stringt){

//如果兩個字符串的長度都不一致,那么肯定是無法成為字母異位詞的
if(s.length()!=t.length()){

//直接返回false
returnfalse;

}

//讓a-z這26個字母對應的下標變成0-25方便存到數(shù)組中
//比如a對應的索引就是0
//b對應的索引就是1
int[]table=newint[26];

//從頭到尾遍歷字符串s
for(inti=0;i//把訪問的字符轉換為整數(shù)的形式
//比如訪問字母a,那么-'a'之后就是0,就是a對應的索引為0
intindex=s.charAt(i)-'a';

//那么意味著這個字母出現(xiàn)的頻次需要加1
table[index]++;

}

for(inti=0;i//把訪問的字符轉換為整數(shù)的形式
//比如訪問字母a,那么-'a'之后就是0,就是a對應的索引為0
intindex=t.charAt(i)-'a';

//那么意味著這個字母出現(xiàn)的頻次需要減1
table[index]--;

//如果說發(fā)現(xiàn)這個字母出現(xiàn)的頻次小于了0
//說明t中出現(xiàn)了s中不曾用的字母
if(table[index]0){

//那就不是字母異位詞
returnfalse;

}

}

//否則,說明是字母異位詞
returntrue;

}
}

2、C++ 代碼

classSolution{
public:
boolisAnagram(strings,stringt){
//如果兩個字符串的長度都不一致,那么肯定是無法成為字母異位詞的
if(s.length()!=t.length()){

//直接返回false
returnfalse;

}

//讓a-z這26個字母對應的下標變成0-25方便存到數(shù)組中
//比如a對應的索引就是0
//b對應的索引就是1
vector<int>table(26,0);

//從頭到尾遍歷字符串s
for(inti=0;i//把訪問的字符轉換為整數(shù)的形式
//比如訪問字母a,那么-'a'之后就是0,就是a對應的索引為0
intindex=s[i]-'a';

//那么意味著這個字母出現(xiàn)的頻次需要加1
table[index]++;

}

for(inti=0;i//把訪問的字符轉換為整數(shù)的形式
//比如訪問字母a,那么-'a'之后就是0,就是a對應的索引為0
intindex=t[i]-'a';

//那么意味著這個字母出現(xiàn)的頻次需要減1
table[index]--;

//如果說發(fā)現(xiàn)這個字母出現(xiàn)的頻次小于了0
//說明t中出現(xiàn)了s中不曾用的字母
if(table[index]0){

//那就不是字母異位詞
returnfalse;

}

}

//否則,說明是字母異位詞
returntrue;
}
};

3、Python 代碼

classSolution:
defisAnagram(self,s:str,t:str)->bool:

#如果兩個字符串的長度都不一致,那么肯定是無法成為字母異位詞的
iflen(s)!=len(t):
#直接返回False
returnFalse

#讓a-z這26個字母對應的下標變成0-25方便存到數(shù)組中
#比如a對應的索引就是0
#b對應的索引就是1
table=[0]*26

#從頭到尾遍歷字符串s
foriins:

#把訪問的字符轉換為整數(shù)的形式
#比如訪問字母a,那么-'a'之后就是0,就是a對應的索引為0
index=ord(i)-ord('a')

#那么意味著這個字母出現(xiàn)的頻次需要加1
table[index]+=1


foriint:

#把訪問的字符轉換為整數(shù)的形式
#比如訪問字母a,那么-'a'之后就是0,就是a對應的索引為0
index=ord(i)-ord('a')

#那么意味著這個字母出現(xiàn)的頻次需要減1
table[index]-=1

#如果說發(fā)現(xiàn)這個字母出現(xiàn)的頻次小于了0
#說明t中出現(xiàn)了s中不曾用的字母
iftable[index]0:

#那就不是字母異位詞
returnFalse


#否則,說明是字母異位詞
returnTrue

四、復雜度分析

  • 時間復雜度:O(n),其中 n 為 s 的長度。
  • 空間復雜度:O(S)),其中 S 為字符集大小,此處 S = 26 。

審核編輯 :李倩


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 計數(shù)器
    +關注

    關注

    32

    文章

    2284

    瀏覽量

    96030
  • 字母
    +關注

    關注

    0

    文章

    2

    瀏覽量

    7180
  • 字符串
    +關注

    關注

    1

    文章

    589

    瀏覽量

    21112

原文標題:LeetCode 242:有效的字母異位詞

文章出處:【微信號:TheAlgorithm,微信公眾號:算法與數(shù)據(jù)結構】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    字符串在數(shù)據(jù)庫的存儲方式

    數(shù)據(jù)庫是現(xiàn)代信息技術存儲和管理數(shù)據(jù)的核心組件。字符串作為最常見的數(shù)據(jù)類型之,在數(shù)據(jù)庫的存儲方式對其性能和可擴展性有著重要影響。 數(shù)據(jù)類型 固定長度
    的頭像 發(fā)表于 01-07 15:41 ?701次閱讀

    字符串在編程的應用實例

    字符串在編程中有著廣泛的應用,它們被用于表示文本數(shù)據(jù)、處理用戶輸入、構建動態(tài)內容等。以下是字符串在編程的應用實例: 1. 用戶輸入與輸出 用戶輸入 :程序通常需要從用戶那里獲取輸
    的頭像 發(fā)表于 01-07 15:33 ?609次閱讀

    字符串字符數(shù)組的區(qū)別

    在編程語言中,字符串字符數(shù)組是種基本的數(shù)據(jù)結構,它們都用于存儲和處理文本數(shù)據(jù)。盡管它們在功能上有定的重疊,但在內部表示、操作方式和使用場景上存在顯著差異。 1. 內部表示
    的頭像 發(fā)表于 01-07 15:29 ?991次閱讀

    字符串反轉的實現(xiàn)方式

    在編程字符串反轉是個基礎而重要的操作,它涉及到將一個字符串字符順序顛倒過來。這個操作在
    的頭像 發(fā)表于 01-07 15:27 ?709次閱讀

    字符串處理方法 字符串轉數(shù)字的實現(xiàn)

    在編程,將字符串轉換為數(shù)字是個常見的需求。不同的編程語言有不同的方法來實現(xiàn)這功能。以下是些常見編程語言中的
    的頭像 發(fā)表于 01-07 15:26 ?753次閱讀

    ASCII碼在編程的應用實例

    的應用實例: 1. 字符串處理 在編程,ASCII碼常用于字符串的處理。例如,可以使用ASCII碼來比較兩個字符的大小關系,或者通過將字符
    的頭像 發(fā)表于 11-10 09:43 ?1346次閱讀

    MATLAB(5)--字符串處理

    兩個字符串里的每個字符依次按ASCII值大小逐個進行比較,比較的結果是個數(shù)值向量,向量的元素為1或者0。 字符串比較函數(shù)用于
    發(fā)表于 09-06 10:22

    labview字符串數(shù)組轉化為數(shù)值數(shù)組

    常重要的。LabVIEW支持多種數(shù)據(jù)類型,包括數(shù)值、字符串、數(shù)組、簇等。在本例,我們將關注字符串數(shù)組和數(shù)值數(shù)組。 字符串數(shù)組 :由系列
    的頭像 發(fā)表于 09-04 17:47 ?4883次閱讀

    labview字符串如何轉換為16進制字符串

    在LabVIEW,將字符串轉換為16進制字符串個常見的需求,尤其是在處理數(shù)據(jù)通信和硬件接口時。LabVIEW提供了多種方法來實現(xiàn)這
    的頭像 發(fā)表于 09-04 15:54 ?4682次閱讀

    labview如何實現(xiàn)字符串換行

    1. 字符串換行的基本概念 在LabVIEW字符串換行通常指的是在字符串插入換行符,使得字符串
    的頭像 發(fā)表于 09-04 15:47 ?3451次閱讀

    labview如何實現(xiàn)字符串選擇輸出

    在LabVIEW實現(xiàn)字符串選擇輸出是項常見的任務,它涉及到字符串處理、條件判斷和用戶界面設計等多個方面。由于LabVIEW是
    的頭像 發(fā)表于 09-04 15:44 ?2009次閱讀

    labview中常用的字符串函數(shù)有哪些?

    ) : 功能:該函數(shù)用于返回字符串所包含的字符個數(shù)。 應用場景:常用于需要計算字符串長度的場景,如文件命名、數(shù)據(jù)處理等。 連接字符串(String Concatenate) : 功能:
    的頭像 發(fā)表于 09-04 15:43 ?1671次閱讀

    labview字符串的四種表示各有什么特點

    。在LabVIEW字符串種基本的數(shù)據(jù)類型,用于表示文本信息。字符串在LabVIEW中有多種表示方式,每種方式都有其特定的應用場景和特點。以下是對LabVIEW
    的頭像 發(fā)表于 09-04 15:40 ?1246次閱讀

    使用CIPDOMAIN命令時,解析長度為64個字符或更大的DNS名稱失敗了,為什么?

    s3.dualstack.us-east-1.amazonaws.com 將字符串減少到 63 個字符有效(-ca57 已替換為 -ca1) AT+CIPDOMAIN=\"
    發(fā)表于 07-11 07:59

    FX3在安卓系統(tǒng)上顯示為\"DDC\",有什么辦法可以定義這個字符串嗎?

    正如標題所說,當我將 FX3 插入安卓設備時,安卓會詢問應用程序是否可以訪問\"DDC\" 。 有什么辦法可以定義這個字符串嗎? 謝謝!
    發(fā)表于 07-03 08:15