判斷字串是否唯一?

2021-10-06 11:53:48 字數 1656 閱讀 9488

實現乙個演算法,確定乙個字串 s 的所有字元是否全都不同。

示例 1:

輸入: s = "abcdeff"

輸出: false

示例 2:

輸入: s = "abc"

輸出: true

思路1:根據字符集大小定義乙個合理的陣列arr例如,ascii 256,定義個256大小的陣列,遍歷字串s,設定s[i]++,最後統計arr長度,跟s的長度對比,一樣則返回true,否則返回false。時間複雜度o(n);空間複雜度o(n)

思路1本質上是使用hashmap這種資料結構來計算乙個字串是否重複,php陣列即可實現,是不是很方便

思路1缺點:需要遍歷整個字串,例如aabcdef,不能在s[1]就發現重複,返回

php語言實現

//php語言實現

class solution else

}$count=count($temp);

if($count==$lenth)else

}

}

思路1改進版php

//php語言實現

class solution else

}return true;

}

}

golang實現

//go語言實現

//使用map,類似php的key value陣列

func isunique(astr string) bool

arrmap[string(astr[i])] = true

} //for k,v := range arrmap

return true

}

如果字符集在ascii碼,則可以使用乙個256大小的bool陣列來實現

//go語言實現

//使用切片陣列

func isunique(astr string) bool

arr[astr[i]] = true

} return true

}

還有一種節省空間的使用方法,通過位運算來實現

例如ascii字元可以使用乙個長度為8的int陣列arr[8]來表示(先不考慮arr[0])(int 4個位元組,共32位二進位制,通過二進位製上的0、1表示乙個數是否存在)

例如字元b對應的ascii碼是98,98/32=3;98%32=2;可以用arr[3]所在整數對應的二進位制的第2位來表示

//go語言實現

//使用位運算,減少空間使用

func isunique(astr string) bool

arr[idx] |= 1 << shift

} return true

}

字串中的字元是否唯一

實現乙個演算法來判斷乙個字串中的字元是否唯一 即沒有重複 不能使用額外的資料結構。即只使用基本的資料結構 字串中的字元是否唯一?一拿到題很容易就能想到以hash的方式來做。只能用基本的資料結構的要求其實很明顯的也在提示我們,只要那個陣列模擬成hash即可。字串中有26個字母。注 若不止包含26個字母...

判斷字串中的字元是否具有唯一性

問題 如何判斷輸入的字串兒中的每個字元是否都具有唯一性?我們先來隨便定義乙個可以輸入字串兒的函式,然後再呼叫這個函式,看看返回的結果是否和我們預期的結果一致 func challenge input string bool challenge input no duplicates 應該返回true...

字串 判斷是否

字串判斷的所有 isdigit 是否全是數字 isalpha 是否全是由字母組成 返回true isalnum 是否由字母和數字組成 islower 是否都是小寫字母 isupper 是否都是大寫字母 istitle 是否英文本母首字母都是大寫 isalpha 是否全是英文 中文的漢字會被判為tru...