我正在使用我的程序,我需要从用户给我的字符串中删除重复的字符。我引用了其他问题,但它们都StringBuilder
用于删除重复项。但是,有什么方法可以在不将字符串转换为数组的情况下使用StringBuilder
and删除重复项Set
?
我还没有学过这些,所以我不太了解它们。我能得到一些帮助吗?
例如,如果用户输入happyrolling
的结果应该是hapyroling
.
我正在使用我的程序,我需要从用户给我的字符串中删除重复的字符。我引用了其他问题,但它们都StringBuilder
用于删除重复项。但是,有什么方法可以在不将字符串转换为数组的情况下使用StringBuilder
and删除重复项Set
?
我还没有学过这些,所以我不太了解它们。我能得到一些帮助吗?
例如,如果用户输入happyrolling
的结果应该是hapyroling
.
从您的示例看来,您想删除重复的字符(而不是words)。
您可以使用正则表达式查找重复项并将其删除:
str = str.replaceAll("(.)\\1+", "$1");
此正则表达式捕获每个字符,但仅在通过使用对捕获组的反向引用后跟相同字符时匹配。替换是捕获的字符,例如“xx”被“x”替换
不知何故,您需要将字符串转换为字符数组。String 在 Java 中是不可变的,所以如果你想对 String 进行任何类型的操作,要么必须将其转换为 charArray,要么必须使用 StringBuilder 来创建新的 String。您可以使用 hashmap 跟踪使用的字符。
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);
}