確定乙個字串的所有字元全都不同演算法實現

2021-07-10 22:50:29 字數 1218 閱讀 5087

首先要確認字串的編碼方式,是ascii還是unicode,這很重要。

我們就當是ascii來處理吧,如果不是的話,只需要擴大儲存空間就可以了,其餘邏輯都是一樣的。

演算法一:

演算法的中心思想是利用雜湊表的原理,先初始化乙個陣列,然後迴圈取出字元,將下標為此字元的ascii值的位置置為true,如果將要儲存的下標已經是true,則證明有重複的字元了,返回false。

/**

* 判斷乙個字串是否各個字元都不同

* *@author liudezhi

*/public

class

stringisrepeat

/*** 全不相同返回true,有相同的返回false

*@param str

*@return

*/public

static

boolean

isuniquechars(string str)

boolean char_set = new

boolean[256];

for (int i = 0; i < str.length(); i++)

char_set[val] = true;

}return

true;

}}

這個演算法的時間複雜度為o(n),其中n為字串長度。空間複雜度為o(1)。

演算法二:

演算法的中心思想是使用位向量,可以將空間占有減少為原來的1/8。因為boolean是乙個位元組,int是4個位元組。

/**

* 判斷乙個字串是否各個字元都不同

* *@author administrator

*/public

class

stringisrepeat

/*** 全不相同返回true,有相同的返回false

*@param str

*@return

*/public

static

boolean

isuniquechars(string str)

int checker = 0;

for(int i = 0;i < str.length(); i++)

checker |= (1

true;

}}

確定乙個字串的所有字元是否全都不同

題目 給定乙個string inistring 請返回乙個bool值,true 代表所有字元全都不同,false 代表存在相同的字元。保證字串中的字元為ascii字元。字串的長度小於等於3000。思路 用乙個int做位運算,乙個int4個位元組32位,一共26個字母綽綽有餘。include incl...

確定乙個字串所有字元是否都不同

題目 實現乙個演算法,確定乙個字串的所有字元是否都不相同。解答 總共有256個字元,可以申請乙個布林陣列,初始化都為false.遍歷所有字元,把字元對應到布林陣列,如果陣列該位為true,則說明之前該字元出現過,否則修改值為true。bool same char str for int i 0 i ...

在乙個字串中尋找另外乙個字串

在乙個字串中尋找另外乙個字串 public class text foundit true break test system.out.println foundit?found it didn t find it 該段程式有點難以理解,主要就是if語句的理解,if searchme.charat ...