Jos*_*ond 3 java loops duplicates
字符串userKeyword来自用户键盘输入 - 我试图编写一个方法来返回此字符串,并删除重复的字符.
建议我使用charAt和indexOf来完成这个任务,所以最简单的方法似乎是通过字母表运行,让indexOf挑选出关键字中出现的任何字符并将它们连接在一起.我试图在下面这样做,但没有成功.
是否有更简单或更直接的方法来实现这一目标?
为什么我的代码不起作用?(我得到了26'的回报)
public static final String PLAIN_ALPHA = "abcdefghijklmnopqrstuvwxyz";
private String removeDuplicates(String userKeyword){
int charLength = PLAIN_ALPHA.length();
int charCount = 0;
char newCharacter = PLAIN_ALPHA.charAt(charCount);
String modifiedKeyword = "";
while (charCount < charLength){
if (userKeyword.indexOf(newCharacter) != -1);{
modifiedKeyword = modifiedKeyword + newCharacter;
}
charCount = charCount + 1;
}
return modifiedKeyword;
}
Run Code Online (Sandbox Code Playgroud)
while (charCount < charLength){
newCharacter = PLAIN_ALPHA.charAt(charCount);
if (userKeyword.indexOf(newCharacter) != -1);{
modifiedKeyword = modifiedKeyword + newCharacter;
}
charCount = charCount + 1;
Run Code Online (Sandbox Code Playgroud)
在while循环中移动了newCharacter赋值,我现在获得的输出与PLAIN_ALPHA相同,而不是userKeyword,省略了重复项.我究竟做错了什么?
你可以只用一行:
private String removeDuplicates(String userKeyword){
return userKeyword.replaceAll("(.)(?=.*\\1)", "");
}
Run Code Online (Sandbox Code Playgroud)
这通过替换为空白(即移除)字符串中稍后再次出现的所有字符来实现,通过使用"向前看"来实现对捕获字符的反向引用.