請(qǐng)實(shí)現(xiàn)一個(gè)算法,確定一個(gè)字符串的所有字符是否全都不同。這里我們要求不允許使用額外的存儲(chǔ)結(jié)構(gòu)。
給定一個(gè)string iniString,請(qǐng)返回一個(gè)bool值,True代表所有字符全都不同,F(xiàn)alse代表存在相同的字符。保證字符串中的字符為ASCII字符。字符串的長(zhǎng)度小于等于3000。
APPROACH1 SET
CC150沒(méi)有必須要求不許用額外存儲(chǔ)。
如果用存儲(chǔ),可以問(wèn)一下,字符集是ASCII還是UNICODE。ASCII的長(zhǎng)度只有256,新建一個(gè)長(zhǎng)度256的boolean數(shù)組就行了。大于256可以直接返回false。時(shí)間O(n)。
APPROACH2 BRUTE FORCE
O(n2) 。
public boolean checkDifferent(String iniString) {
// write code here
for(int i = 0 ; i < iniString.length()-1 ; i ++)
for(int j = i + 1 ; j < iniString.length() ; j ++){
if(iniString.charAt(i) == iniString.charAt(j)){
return false;
}
}
return true;
}
APPROACH3 SORT
排序,但是也要額外存儲(chǔ)。
--