【題目】給定乙個字元型別陣列chas,判斷chas中是否所有的字元都只出現過一次,請根據以下不同的兩種要求實現兩個函式。
【舉例】chas = [『a』,『b』,『c』],返回true;chas = [『1』,『2』,『1』],返回false。
【要求】1.實現時間複雜度為o(n)的方法。
2.在保證額外空間複雜度為o(1)的前提下,請實現時間複雜度盡量低的方法。
/*
* 給定乙個字元型別陣列chas,判斷chas中是否所有的字元都只出現過一次,請根據以下不同的兩種要求實現兩個函式。
*/public
class
isunique
boolean
b =
newboolean
[256];
for(
int i =
0; i < chas.length; i++
) b[chas[i]]=
true;}
return
true;}
// 空間複雜度o(1),時間複雜度o(nlogn),利用了堆排序進行了一次排序,才開始判斷
public
boolean
isunique2
(char
chas)
heapsort
(chas)
;for
(int i =
1; i < chas.length; i++)}
return
true;}
public
void
heapsort
(char
chas)
for(
int i = chas.length -
1; i >
0; i--)}
public
void
heapify
(char
chas,
int index,
int heapsize)
swap
(chas, largest, index)
; index = largest;
left = index *2+
1;}}
public
void
heapinsert
(char
chas,
int index)
}public
void
swap
(char
chas,
int i,
int j)
}
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...
判斷字元陣列中是否所有字元都只出現過一次
給定乙個字元型別陣列,判斷陣列中是否所有的字元都只出現過一次。使用字典儲存出現過的字元,遍歷陣列過程中,判斷每乙個字元是否出現過 def is unique s if s is none return true char map for c in s if c in char map return ...