判斷字元陣列中是否所有字元都只出現過一次

2021-10-02 02:48:04 字數 4312 閱讀 3365

給定乙個字元型別陣列,判斷陣列中是否所有的字元都只出現過一次。

使用字典儲存出現過的字元,遍歷陣列過程中,判斷每乙個字元是否出現過

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 的前提下,請實現時間複雜度...