欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

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

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

3天內(nèi)不再提示

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

算法與數(shù)據(jù)結(jié)構(gòu) ? 來源:吳師兄學算法 ? 作者:吳師兄學算法 ? 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 字符怎么辦?你能否調(diào)整你的解法來應對這種情況?

二、題目解析

題目講的是讓你判斷兩個字符串中的字母是否一致,比如示例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//把訪問的字符轉(zhuǎn)換為整數(shù)的形式
//比如訪問字母a,那么-'a'之后就是0,就是a對應的索引為0
intindex=s.charAt(i)-'a';

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

}

for(inti=0;i//把訪問的字符轉(zhuǎn)換為整數(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//把訪問的字符轉(zhuǎn)換為整數(shù)的形式
//比如訪問字母a,那么-'a'之后就是0,就是a對應的索引為0
intindex=s[i]-'a';

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

}

for(inti=0;i//把訪問的字符轉(zhuǎn)換為整數(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:

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

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


foriint:

#把訪問的字符轉(zhuǎn)換為整數(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 。

審核編輯 :李倩


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

    關(guān)注

    32

    文章

    2276

    瀏覽量

    95066
  • 字母
    +關(guān)注

    關(guān)注

    0

    文章

    2

    瀏覽量

    7163
  • 字符串
    +關(guān)注

    關(guān)注

    1

    文章

    585

    瀏覽量

    20613

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

文章出處:【微信號:TheAlgorithm,微信公眾號:算法與數(shù)據(jù)結(jié)構(gòu)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

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

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

    字符串在編程的應用實例

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

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

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

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

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

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

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

    ASCII碼在編程的應用實例

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

    MATLAB(5)--字符串處理

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

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

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

    labview字符串如何轉(zhuǎn)換為16進制字符串

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

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

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

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

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

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

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

    如何提取串口接收字符串數(shù)組里的某個字符串?

    條(有時候二十多條不定)響應字符串指令,我是用一個字符串數(shù)組來接收這些返回來的指令的。我現(xiàn)在只需要讀取數(shù)組里的某條指令,應該怎么把它提取出來?。??有哪位前輩懂的,希望能提供點幫助。我找了好久找到
    發(fā)表于 04-22 06:05

    深入解析西門子博途文本塊接口的結(jié)構(gòu)與功能

    STRING 和 WSTRING 數(shù)據(jù)類型存儲一個字符串的多個字符。允許在字符串中使用任何 ASCII碼類型的字符。這些
    發(fā)表于 04-11 11:23 ?1450次閱讀
    深入解析西門子博途文本塊接口的結(jié)構(gòu)與功能

    C語言字符串編譯函數(shù)介紹

    在C語言中,字符串實際上是使用null字符O'終止的字符數(shù)組。因此,個以null結(jié)尾的
    的頭像 發(fā)表于 03-07 16:18 ?560次閱讀
    C語言<b class='flag-5'>字符串</b>編譯函數(shù)介紹