Golang字符串變位詞示例詳解
實現(xiàn)目標(biāo)
本文的目標(biāo)是寫出一個函數(shù) anagram(s, t) 去判斷兩個字符串是否是顛倒字母順序構(gòu)成的。下面話不多說了,來一起看看詳細(xì)的介紹吧。
GoLang 實現(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)鍵點1 :
定義保存最后判斷兩個字符串是否相同的 長度的取值:
根據(jù)ASCII 表可以知道:
第一個單字符 ' ' 的10 進(jìn)制值位32 , 最后一個單字符 '~' 10進(jìn)制值位 126 , 得到之間的差值為 94 ,
這里預(yù)測每個字符都被使用到了, 所以長度直接定義為 94了.
Java 實現(xiàn) 和上面類似:
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é)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
- golang實現(xiàn)unicode轉(zhuǎn)換為字符串string的方法
- Golang 中整數(shù)轉(zhuǎn)字符串的方法
- Golang使用zlib壓縮和解壓縮字符串
- Golang實現(xiàn)字符串倒序的幾種解決方案
- Golang中文字符串截取函數(shù)實現(xiàn)原理
- Golang編程實現(xiàn)刪除字符串中出現(xiàn)次數(shù)最少字符的方法
- Golang 統(tǒng)計字符串字?jǐn)?shù)的方法示例
- Golang字符串的拼接方法匯總
- 詳解Golang 與python中的字符串反轉(zhuǎn)
- 簡單談?wù)凣olang中的字符串與字節(jié)數(shù)組
相關(guān)文章
golang?gorm開發(fā)架構(gòu)及寫插件示例
這篇文章主要為大家介紹了golang?gorm開發(fā)架構(gòu)及寫插件的詳細(xì)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2022-04-04
Skywalking-go自動監(jiān)控增強(qiáng)使用探究
這篇文章主要介紹了Skywalking-go自動監(jiān)控增強(qiáng)使用深入探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01
Go net/http/pprof分析內(nèi)存泄露及解決過程
這篇文章主要介紹了Go net/http/pprof分析內(nèi)存泄露及解決過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-04-04

