判斷字串是否沒有重複字元

2021-08-14 08:28:49 字數 1682 閱讀 2223

實現乙個演算法確定字串中的字元是否均唯一出現。

給出"abc",返回true

給出"aab",返回false

思路一:

判斷字串是否有重複字元,類似於,刪除陣列中重複的數字

1、將字串轉成字元陣列

2、使用arrays.sort(char)對字元陣列進行排序,然後,逐個遍歷整個排序後的陣列,如果不是最後乙個字元,並且如果當前字元和其後面的字元相同,那麼就直接返回false,否則繼續遍歷,如果所有的元素和其後面都不相同或者已經遍歷到最後乙個字元了,就認為是沒有重複字元,即返回true

3、另外,對於null或者長度是0的字串,沒有重複字元,返回true

思路二:

建立雜湊表,遍歷字串,如果雜湊表中不包含該字元,就新增進去,如果包含,就返回false,如果沒有重複的字元,那麼最後返回true。

思路三:

上述兩種思路的均需要額外開闢空間,如果想不開闢空間,那麼可以借助string.indexof(char ch, int fromindex),遍歷字串中的字元,遍歷到倒數第二個字元即可。對每個字元,判斷其後是否有重複的字元即可,如果有就返回false,如果沒有重複的字元,那麼返回true。

public class solution 

//如果str的長度是0或者1,那麼沒有重複字元,返回true

if(str.length() == 0 || str.length() == 1)

//將字串轉成字元陣列

char ch = str.tochararray();

//對陣列進行排序

arrays.sort(ch);

//遍歷陣列,看當前字元是否和後面字元相同,相同就返回false,否則返回true

for(int i = 0; i < ch.length-1; i++)

}return true;

*//*

//思路二

//如果str是null,那麼丟擲異常

if(str == null)

//如果str的長度是0或者1,那麼沒有重複字元,返回true

if(str.length() == 0 || str.length() == 1)

//建立hash表,將字串字元存到hash表中

hashseths = new hashset();

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

hs.add(str.charat(i));

}return true;

*///思路三

//如果str是null,那麼丟擲異常

if(str == null)

//如果str的長度是0或者1,那麼沒有重複字元,返回true

if(str.length() == 0 || str.length() == 1)

//從前向後遍歷字串,對每個字元,呼叫string.indexof()看其後面是否有相同的字元,如果有返回false,否則最後返回true

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

}return true;

}}

題目 判斷字串是否沒有重複字元

通過 實現乙個演算法確定字串中的字元是否均唯一出現 您在真實的面試中是否遇到過這個題?yes 哪家公司問你的這個題?樣例給出 abc 返回true 給出 aab 返回false 挑戰如果不使用額外的儲存空間,你的演算法該如何改變?標籤expand 字串處理 cracking the coding i...

陣列 判斷字串是否沒有重複字元 簡單

描述 實現乙個演算法確定字串中的字元是否均唯一出現 您在真實的面試中是否遇到過這個題?是 樣例給出 abc 返回 true 給出 aab 返回 false 挑戰如果不使用額外的儲存空間,你的演算法該如何改變?題目鏈結 分析 對於string,它和vector差不多。這裡我們使用兩種方法,第一種是暴力...

如何判斷字串是否包含重複字元

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!如何判斷字串是否包含重複字元 問題 實現乙個演算法來判斷乙個字串中的字元是否唯一 即沒有重複 不能使用額外的資料結構.即只使用基本的資料結構 解答 若字元為ascii字元集合.則乙個時間複雜度為o n 的解法如下 我們還可以通過位運算來減少空間的使...