1 確定字元互異

2021-09-24 05:20:40 字數 880 閱讀 7830

請實現乙個演算法,確定乙個字串的所有字元是否全都不同。這裡我們要求不允許使用額外的儲存結構。

給定乙個stringinistring,請返回乙個bool值,true代表所有字元全都不同,false代表存在相同的字元。保證字串中的字元為ascii字元。字串的長度小於等於3000。

首先,不看條件不允許使用額外的資料結構的話,我最先想到的就是使用hashmap,遍歷一遍,儲存每個字元一共有多少個,再遍歷一遍hashmap,看看是否每個字元都是單一的。解法就是:  時間複雜度為0(n),空間複雜度o(n)

hashmapstr=new hashmap<>();

for (int i=0;i1)

}return true;

條件不允許使用額外的儲存結構,也就是只能使用這種陣列形式的儲存結構

第乙個思路,就是直接兩個for循換完事了  時間複雜度o(n^2),空間複雜度o(n)

for(int i=0;i看了下討論區的,突然恍然大霧,其實兩個for循換不用遍歷到n,只用遍歷到256,就可以了,再多 就必然重複,一共就256種字元,這樣時間複雜度為o(1)

但是時間複雜度太高,因為是字串,一般預設ascii碼,一共只有256個字元,則建立乙個容量為256的陣列,雜湊這個字串,判斷即可

時間複雜度為o(n),空間複雜度為o(n)

if (inistring.length()>256)

boolean char1=new boolean[256];

for (int i=0;ichar1[val]=true;

}return true;

}

確定字元互異

題目描述 請實現乙個演算法,確定乙個字串的所有字元是否全都不同。這裡我們要求不允許使用額外的儲存結構。給定乙個string inistring,請返回乙個bool值,true代表所有字元全都不同,false代表存在相同的字元。保證字串中的字元為ascii字元。字串的長度小於等於3000。測試樣例 a...

確定字元互異

題目描述 請實現乙個演算法,確定乙個字串的所有字元是否全都不同。這裡我們要求不允許使用額外的儲存結構。給定乙個string inistring,請返回乙個bool值,true代表所有字元全都不同,false代表存在相同的字元。保證字串中的字元為ascii字元。字串的長度小於等於3000。測試樣例 a...

確定字元互異

請實現乙個演算法,確定乙個字串的所有字元是否全都不同。這裡我們要求不允許使用額外的儲存結構。給定乙個stringinistring,請返回乙個bool值,true代表所有字元全都不同,false代表存在相同的字元。保證字串中的字元為ascii字元。字串的長度小於等於3000。測試樣例 aeiou 返...