哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

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

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

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

判斷兩個(gè)字符串中的字母是否一致

算法與數(shù)據(jù)結(jié)構(gòu) ? 來(lái)源:吳師兄學(xué)算法 ? 作者:吳師兄學(xué)算法 ? 2022-08-05 11:49 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

大家好,我是吳師兄

今天的題目來(lái)源于 LeetCode 第 242 號(hào)問(wèn)題:有效的字母異位詞,難度為「簡(jiǎn)單」。

一、題目描述

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

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

示例 1:

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

示例 2:

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

提示:

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

進(jìn)階:如果輸入字符串包含 unicode 字符怎么辦?你能否調(diào)整你的解法來(lái)應(yīng)對(duì)這種情況?

二、題目解析

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

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

沒(méi)錯(cuò),就是哈希表

解法思路很簡(jiǎn)單。

1、首先先判斷兩個(gè)字符串長(zhǎng)度是否相同,不相同直接返回false

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

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

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

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

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

三、參考代碼

1、Java 代碼

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

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

//直接返回false
returnfalse;

}

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

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

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

}

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

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

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

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

}

}

//否則,說(shuō)明是字母異位詞
returntrue;

}
}

2、C++ 代碼

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

//直接返回false
returnfalse;

}

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

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

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

}

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

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

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

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

}

}

//否則,說(shuō)明是字母異位詞
returntrue;
}
};

3、Python 代碼

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

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

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

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

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

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


foriint:

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

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

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

#那就不是字母異位詞
returnFalse


#否則,說(shuō)明是字母異位詞
returnTrue

四、復(fù)雜度分析

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

審核編輯 :李倩


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

    關(guān)注

    32

    文章

    2320

    瀏覽量

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

    關(guān)注

    0

    文章

    2

    瀏覽量

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

    關(guān)注

    1

    文章

    596

    瀏覽量

    23209

原文標(biāo)題:LeetCode 242:有效的字母異位詞

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    求助 LabVIEW 字符串比較

    請(qǐng)教大神 ,用一個(gè)字符串和多個(gè)字符串比較程序應(yīng)該怎么做。 比如:A字符串和B字符串組(B組字符串個(gè)數(shù)不定可以是
    發(fā)表于 03-02 17:24

    打開(kāi)工程后工程的字體沒(méi)有顯示,如字符串,數(shù)字等控件不能預(yù)覽顯示字體?

    打開(kāi)工程后工程的字體沒(méi)有顯示,如字符串,數(shù)字等控件不能預(yù)覽顯示字體?
    發(fā)表于 02-25 17:39

    cJSON庫(kù)是什么?

    。 string如果遇到"開(kāi)頭,則說(shuō)明json值是字符串,就解析它的值,此時(shí)只需要拿到兩個(gè)"之間的值即可。保存字符串也是個(gè)結(jié)構(gòu)體,需要申請(qǐng)內(nèi)存,計(jì)算長(zhǎng)度的過(guò)程
    發(fā)表于 01-29 07:13

    字符串控件與靜態(tài)字符串控件預(yù)覽字符顯示亂碼,如何修改顯示正常?

    字符串控件與靜態(tài)字符串控件預(yù)覽字符顯示亂碼,如何修改顯示正常?
    發(fā)表于 01-20 17:17

    字符串,數(shù)字控件如何控制背景顏色和前景字體顏色?

    字符串,數(shù)字控件如何控制背景顏色和前景字體顏色?
    發(fā)表于 01-20 15:12

    單片機(jī)的串口通訊串行同步通信與串行異步通信

    就保證了起始位開(kāi)始處定會(huì)有個(gè)下跳沿,由此就可以標(biāo)志一個(gè)字符傳輸?shù)钠鹗?。而根?jù)起始位和停止位也就很容易的實(shí)現(xiàn)了字符的界定和同步。 顯然,采用異步通信時(shí),發(fā)送端和接收端可以由各自的
    發(fā)表于 01-15 08:06

    Linux下怎么讓中文字符串按照拼音排序?

    求教 Linux 下怎么讓中文字符串按照拼音排序?
    發(fā)表于 01-06 07:40

    字符串關(guān)聯(lián)數(shù)字變量如何使用?我們的地址都是16位數(shù)據(jù),可以使用16位數(shù)字變量顯示字符串嗎?

    字符串關(guān)聯(lián)數(shù)字變量如何使用?我們的地址都是16位數(shù)據(jù),可以使用16位數(shù)字變量顯示字符串嗎?
    發(fā)表于 12-15 08:24

    飛凌嵌入式ElfBoard-標(biāo)準(zhǔn)IO接口之格式化輸入

    字符,格式說(shuō)明符除外(%):任何不是空格字符(空白、換行符或制表符)或格式說(shuō)明符(以%字符開(kāi)頭)的字符都會(huì)導(dǎo)致函數(shù)從流讀取下
    發(fā)表于 11-12 08:35

    RISC-V的工具鏈GCC內(nèi)聯(lián)匯編

    ;;\"作為分隔符,沒(méi)有添加分隔符的兩個(gè)字符串會(huì)被合并成為一個(gè)字符串?!皡R編指令列表”的編寫(xiě)語(yǔ)法和普通的匯編程編寫(xiě)是樣的。 4.\"輸入操作數(shù)\",用來(lái)指定當(dāng)前內(nèi)聯(lián)匯編程序的輸入
    發(fā)表于 10-30 06:59

    labview如何生成個(gè)帶字符串返回的dll

    labview如何生成個(gè)dll,如下圖,要求個(gè)輸入,類(lèi)型是字符串,返回類(lèi)型也是字符串
    發(fā)表于 08-28 23:20

    在Python字符串逆序有幾種方式,代碼是什么

    對(duì)于個(gè)給定的字符串,逆序輸出,這個(gè)任務(wù)對(duì)于python來(lái)說(shuō)是種很簡(jiǎn)單的操作,畢竟強(qiáng)大的列表和字符串處理的些列函數(shù)足以應(yīng)付這些問(wèn)題 了,
    的頭像 發(fā)表于 08-28 14:44 ?1247次閱讀

    harmony-utils之StrUtil,字符串工具類(lèi)

    harmony-utils之StrUtil,字符串工具類(lèi) harmony-utils 簡(jiǎn)介與說(shuō)明 [harmony-utils] 款功能豐富且極易上手的HarmonyOS工具庫(kù),借助眾多實(shí)用工具類(lèi)
    的頭像 發(fā)表于 07-03 11:32 ?746次閱讀

    英語(yǔ)單詞學(xué)習(xí)頁(yè)面+單詞朗讀實(shí)現(xiàn) -- 【1】頁(yè)面實(shí)現(xiàn) ##HarmonyOS SDK AI##

    Speech Kit(基礎(chǔ)語(yǔ)音服務(wù)),即端側(cè)AI 我們分篇文章來(lái)講解 對(duì)于例句單詞效果突出顯示,開(kāi)始我想到的是“屬性字符串StyledString/MutableStyledString”。 通過(guò)閱讀相關(guān)
    發(fā)表于 06-29 23:24

    CAN總線采樣點(diǎn)不一致的危害

    時(shí)間的87.5%處讀取總線狀態(tài)。以下圖示說(shuō)明了位時(shí)間的分段和采樣點(diǎn)位置: 當(dāng)CAN網(wǎng)絡(luò)的節(jié)點(diǎn)配置了不同的采樣點(diǎn)時(shí),會(huì)引發(fā)以下嚴(yán)重問(wèn)題: 位錯(cuò)誤, 不同節(jié)點(diǎn)在不同時(shí)間采樣可能導(dǎo)致對(duì)同位的解釋不一致
    發(fā)表于 06-07 08:55
    沾益县| 南京市| 天镇县| 霍州市| 昆山市| 大兴区| 喀什市| 旺苍县| 莱阳市| 额济纳旗| 沂源县| 青浦区| 迁西县| 弥勒县| 民县| 武乡县| 麻栗坡县| 田东县| 安达市| 临沧市| 江山市| 横山县| 荆门市| 油尖旺区| 阆中市| 正镶白旗| 六盘水市| 敦化市| 紫阳县| 淮北市| 隆昌县| 特克斯县| 咸丰县| 拜城县| 闵行区| 剑河县| 呼和浩特市| 汽车| 闽清县| 富宁县| 麦盖提县|