實現乙個演算法,確定乙個字串 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...