Golang字符串變位詞示例詳解
實(shí)現(xiàn)目標(biāo)
本文的目標(biāo)是寫(xiě)出一個(gè)函數(shù) anagram(s, t) 去判斷兩個(gè)字符串是否是顛倒字母順序構(gòu)成的。下面話不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧。
GoLang 實(shí)現(xiàn)
func solution(s , t string)bool{ if s == t { return true } length := len(s) if length != len(t) { return false } //' ' 32 --> ~ 126 const MAX_ASCII int= 94 const SPACE_INDEX rune = 32 numbers := [MAX_ASCII]int{} sRune := []rune(s) tRune :=[]rune(t) for i := 0 ; i < length ; i++ { index := tRune[i] - SPACE_INDEX numbers[index]++ index = sRune[i] - SPACE_INDEX numbers[index]-- } for i := 0 ; i < MAX_ASCII / 2 ; i++{ mergeSize := numbers[i] if mergeSize != 0 || mergeSize != numbers[MAX_ASCII - 1 - i]{ return false } } return true }
其中關(guān)鍵點(diǎn)1 :
定義保存最后判斷兩個(gè)字符串是否相同的 長(zhǎng)度的取值:
根據(jù)ASCII 表可以知道:
第一個(gè)單字符 ' ' 的10 進(jìn)制值位32 , 最后一個(gè)單字符 '~' 10進(jìn)制值位 126 , 得到之間的差值為 94 ,
這里預(yù)測(cè)每個(gè)字符都被使用到了, 所以長(zhǎng)度直接定義為 94了.
Java 實(shí)現(xiàn) 和上面類(lèi)似:
public boolean anagram(String s, String t) { if (s == null || t == null || s.length() ==0 || s.length() != t.length()){ return false; } if (s.equals(t))return true; final int MAX_ASCII = 94; final char SPACE_INDEX = ' '; int[] numbers = new int[MAX_ASCII]; int length = s.length(); char[] sCharArray = s.toCharArray(); char[] tCharArray = t.toCharArray(); for(int i = 0 ; i< length ; i++){ int index = sCharArray[i] - SPACE_INDEX; numbers[index]++; index = tCharArray[i] - SPACE_INDEX; numbers[index]--; } for (int i =0 ; i < MAX_ASCII / 2 ; i++ ) { int mergeSize = numbers[i]; if ( mergeSize != 0 || mergeSize != numbers[MAX_ASCII - 1 - i]){ return false; } } return true; }
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
- golang實(shí)現(xiàn)unicode轉(zhuǎn)換為字符串string的方法
- Golang 中整數(shù)轉(zhuǎn)字符串的方法
- Golang使用zlib壓縮和解壓縮字符串
- Golang實(shí)現(xiàn)字符串倒序的幾種解決方案
- Golang中文字符串截取函數(shù)實(shí)現(xiàn)原理
- Golang編程實(shí)現(xiàn)刪除字符串中出現(xiàn)次數(shù)最少字符的方法
- Golang 統(tǒng)計(jì)字符串字?jǐn)?shù)的方法示例
- Golang字符串的拼接方法匯總
- 詳解Golang 與python中的字符串反轉(zhuǎn)
- 簡(jiǎn)單談?wù)凣olang中的字符串與字節(jié)數(shù)組
相關(guān)文章
基于gin的golang web開(kāi)發(fā):路由示例詳解
這篇文章主要介紹了基于gin的golang web開(kāi)發(fā):路由示例詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-1010個(gè)現(xiàn)代網(wǎng)站開(kāi)發(fā)必備的Go軟件包工具盤(pán)點(diǎn)
這篇文章主要為大家介紹了10個(gè)現(xiàn)代網(wǎng)站開(kāi)發(fā)必備的Go軟件包,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10go?doudou開(kāi)發(fā)單體RESTful服務(wù)快速上手教程
這篇文章主要為大家介紹了go?doudou開(kāi)發(fā)單體RESTful服務(wù)快速上手教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12Go?結(jié)構(gòu)體序列化的實(shí)現(xiàn)
本文主要介紹了Go?結(jié)構(gòu)體序列化的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01通過(guò)案例詳細(xì)聊聊Go語(yǔ)言的變量與常量
在任何一門(mén)現(xiàn)代的高級(jí)語(yǔ)言中,變量和常量都是它非常基礎(chǔ)的程序結(jié)構(gòu)的組成部分,下面這篇文章主要給大家介紹了關(guān)于如何通過(guò)案例詳細(xì)聊聊Go語(yǔ)言的變量與常量的相關(guān)資料,需要的朋友可以參考下2023-03-03Go語(yǔ)言實(shí)戰(zhàn)之詳細(xì)掌握正則表達(dá)式的應(yīng)用與技巧
正則表達(dá)式是一種從左到右與主題字符串匹配的模式,正則表達(dá)式用于替換字符串中的文本,驗(yàn)證表單,基于模式匹配從字符串中提取子字符串等等,這篇文章主要給大家介紹了關(guān)于Go語(yǔ)言實(shí)戰(zhàn)之詳細(xì)掌握正則表達(dá)式的應(yīng)用與技巧,需要的朋友可以參考下2023-12-12