給定乙個字元型別陣列,判斷陣列中是否所有的字元都只出現過一次。
使用字典儲存出現過的字元,遍歷陣列過程中,判斷每乙個字元是否出現過
def
is_unique
(s):
if s is
none
:return
true
char_map =
for c in s:
if c in char_map:
return
false
char_map[c]
=true
return
true
牛客網
def
is_unique2
(s):
if s is
none
:return
true
sorted_s =
sorted
(s)for i in
range(1
,len
(sorted_s)):
if sorted_s[i]
== sorted_s[i-1]
:return
false
return
true
def
heap_sort
(arr)
:def
left
(index)
:return index*2+
1def
right
(index)
:return index*2+
2def
heapify
(arr, index, size)
: left_child = left(index)
right_child = right(index)
largest = index
if left_child < size and arr[left_child]
> arr[largest]
: largest = left_child
if right_child < size and arr[right_child]
> arr[largest]
: largest = right_child
if largest != index:
arr[largest]
, arr[index]
= arr[index]
, arr[largest]
heapify(arr, largest, size)
defbuild_heap
(arr)
:for i in
range
(len
(arr)//2
,-1,
-1):
heapify(arr, i,
len(arr)
) build_heap(arr)
for i in
range
(len
(arr)-1
,0,-
1): arr[0]
, arr[i]
= arr[i]
, arr[0]
heapify(arr,
0, i)
def
is_unique3
(s):
if s is
none
:return
true
chars =
list
(s) heap_sort(chars)
for i in
range(1
,len
(chars)):
if chars[i]
== chars[i-1]
:return
false
return
true
def
is_unique4
(s):
if s is
none
:return
true
return
len(
set(s))==
len(s)
def
test_heap_sort
(count)
: arr =
[i for i in
range
(count)
] random.shuffle(arr)
heap_sort(arr)
assert
(sorted
(arr)
== arr)
deftest_is_unique()
:assert
(is_unique('')
istrue
)assert
(is_unique(
'a')
istrue
)assert
(is_unique(
'ab')is
true
)assert
(is_unique(
'abcd')is
true
)assert
(is_unique(
'aa')is
false
)assert
(is_unique(
'aba')is
false
)assert
(is_unique(
'abbcde')is
false
)assert
(is_unique2('')
istrue
)assert
(is_unique2(
'a')
istrue
)assert
(is_unique2(
'ab')is
true
)assert
(is_unique2(
'abcd')is
true
)assert
(is_unique2(
'aa')is
false
)assert
(is_unique2(
'aba')is
false
)assert
(is_unique2(
'abbcde')is
false
)assert
(is_unique3('')
istrue
)assert
(is_unique3(
'a')
istrue
)assert
(is_unique3(
'ab')is
true
)assert
(is_unique3(
'abcd')is
true
)assert
(is_unique3(
'aa')is
false
)assert
(is_unique3(
'aba')is
false
)assert
(is_unique3(
'abbcde')is
false
)for i in
range
(100):
size = random.randint(0,
26)s =
''.join(random.sample(string.ascii_letters+string.digits, size)
)assert
(is_unique(s)
== is_unique2(s)
)assert
(is_unique2(s)
== is_unique3(s)
)assert
(is_unique3(s)
== is_unique4(s)
)print
('done'
)if __name__ ==
'__main__'
: test_heap_sort(5)
test_heap_sort(50)
test_heap_sort(
500)
test_is_unique(
)
5 7判斷字元陣列中是否所有的字元都只出現過一次
題目 給定乙個字元型別chas,判斷chas中是否所有的字元都只出現過一次,請根據以下不同的兩種要求實現兩個函式。實現public boolean isunique char chas boolean map newboolean 256 for int i 0 i chas.length i ma...
判斷字元陣列中是否所有的字元都只出現過一次
要求 在保證額外空間複雜度為o 1 的前提下,使得時間複雜度最低 思路 先排序,再遍歷陣列 考點 各個排序演算法的時間,空間複雜度 堆排序 public boolean isunique char chas system.out.println 1 建堆 buildstack chas for in...
判斷字元陣列中是否所有的字元都只出現過一次
題目 給定乙個字元型別陣列chas,判斷chas中是否所有的字元都只出現過一次,請根據以下不同的兩種要求實現兩個函式。舉例 chas a b c 返回true chas 1 2 1 返回false。要求 1.實現時間複雜度為o n 的方法。2.在保證額外空間複雜度為o 1 的前提下,請實現時間複雜度...