[英]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.