我有点困惑如何处理这个问题。 userKeyword作为代码的前一部分的参数传递。我的任务是从输入的关键字中删除任何重复的字符(无论它是什么)。我们刚刚在课堂上完成了循环,所以有些关于这些的提示将不胜感激。
private String removeDuplicates(String userKeyword){
String first = userKeyword;
int i = 0;
while(i < first.length())
{
if (second.indexOf(first.charAt(i)) > -1){
}
i++;
return "";
以下是我迄今为止尝试过的更新内容 - 抱歉。
答案 0 :(得分:0)
这是使用java.util.Set
的完美场所,{{3}}是一种旨在容纳独特元素的构造。通过尝试将每个单词添加到一个集合中,您可以检查您之前是否已经看过它,如下所示:
static String removeDuplicates(final String str)
{
final Set<String> uniqueWords = new HashSet<>();
final String[] words = str.split(" ");
final StringBuilder newSentence = new StringBuilder();
for(int i = 0; i < words.length; i++)
{
if(uniqueWords.add(words[i]))
{
//Word is unique
newSentence.append(words[i]);
if((i + 1) < words.length)
{
//Add the space back in
newSentence.append(" ");
}
}
}
return newSentence.toString();
}
public static void main(String[] args)
{
final String str = "Words words words I love words words WORDS!";
System.out.println(removeDuplicates(str)); //Words words I love WORDS!
}
答案 1 :(得分:0)
为了将来参考,StackOverflow通常要求您发布您拥有的内容,并提出改进建议。
因为它不是活跃的一天,我很无聊,我已经为你做了这件事。此代码非常高效,并且不使用高级数据结构。我这样做是为了让你更容易理解它。
请尝试了解我在做什么。学习就是StackOverflow的用途。
我在代码中添加了评论以帮助您学习。
private String removeDuplicates(String keyword){
//stores whether a character has been encountered before
//a hashset would likely use less memory.
boolean[] usedValues = new boolean[Character.MAX_VALUE];
//Look into using a StringBuilder. Using += operator with strings
//is potentially wasteful.
String output = "";
//looping over every character in the keyword...
for(int i=0; i<keyword.length(); i++){
char charAt = keyword.charAt(i);
//characters are just numbers. if the value in usedValues array
//is true for this char's number, we've seen this char.
boolean shouldRemove = usedValues[charAt];
if(!shouldRemove){
output += charAt;
//now this character has been used in output. Mark that in
//usedValues array
usedValues[charAt] = true;
}
}
return output;
}
示例:
//output will be the alphabet.
System.out.println(removeDuplicates(
"aaaabcdefghijklmnopqrssssssstuvwxyyyyxyyyz"));
答案 2 :(得分:0)
查看this answer。
你可能不明白这一点,但它完成了工作(它巧妙地使用了不允许重复值的HashSet)。
我认为你的老师可能正在寻找使用循环的解决方案 - 请看看William Morisson的答案。
祝你好运!