[英]How to remove duplicates from string (not array) without using StringBuilder?
我正在使用我的程序,我需要從用戶給我的字符串中刪除重復的字符。 我引用了其他問題,但是它們都使用StringBuilder
刪除重復項。 但是,有沒有什么方法可以使用StringBuilder
和Set
刪除重復項而不將字符串轉換為數組?
我還沒有學過,所以我不太了解它們。 我可以幫忙嗎?
例如,如果用戶鍵入happyrolling
則結果應為hapyroling
。
從您的示例看來,您想要刪除重復的字符 (而不是word )。
您可以使用正則表達式找到重復項並將其刪除:
str = str.replaceAll("(.)\\1+", "$1");
此正則表達式捕獲每個字符,但僅在后面有相同字符時才使用對捕獲的組的反向引用進行匹配。 替換是捕獲的字符,因此例如“ xx”被替換為“ x”
您需要以某種方式將字符串轉換為字符數組。 String在Java中是不可變的,因此,如果要在String中執行任何類型的操作,則必須將其轉換為charArray,或者必須使用StringBuilder創建新的String。 您可以使用哈希圖跟蹤使用的字符。
public String removeDuplicates(String str){
char[] array = str.toCharArray();
char ch;
int k = 0;
HashMap<Character, Integer> hMap = new HashMap();
for(int i = 0; i < str.length(); i++){
ch = array[i];
if(hMap.get(ch) == null){
array[k++] = ch;
hMap.put(ch, 1);
}
}
return new String(array, 0, k);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.