Java 如何使用循环(for或while)删除重复的字母

Java 如何使用循环(for或while)删除重复的字母,java,Java,语言:Java 关键提示:*需要使用For循环或While循环遍历字符串 *它删除字符串的重复字母,并返回不带重复字母的单词 例如:字符串是HELLO-然后该方法循环并删除所有重复项,在本例中为L,并在最后返回HELO 到目前为止,我有这个 private String removeAnyDuplicates(String userWord) { //Code goes here? return "" ; // Need to return the new string } 你可以

语言:Java 关键提示:*需要使用For循环或While循环遍历字符串 *它删除字符串的重复字母,并返回不带重复字母的单词

例如:字符串是HELLO-然后该方法循环并删除所有重复项,在本例中为L,并在最后返回HELO

到目前为止,我有这个

private String removeAnyDuplicates(String userWord)
{
   //Code goes here?
   return "" ; // Need to return the new string
}
你可以用它来做。e、 g:


查看此

将字符串转换为字符数组,并将其存储在LinkedHashSet中。这将保留您的订单,并删除重复项

像这样:

private static String removeAnyDuplicates(String userWord)
    {
        char[] chars = userWord.toCharArray();
        Set<Character> charSet = new LinkedHashSet<Character>();
        for (char c : chars) {
            charSet.add(c);
        }

        StringBuilder sb = new StringBuilder();
        for (Character character : charSet) {
            sb.append(character);
        }

       return sb.toString();
    }
试试这一行:

private String removeAnyDuplicates(String userWord) {
    return userWord.replaceAll("(.)\\1+", "$1");
}
这将使用正则表达式查找重复的2个或多个字母,并将其替换为该字母的单个实例

目前尚不清楚重复是指紧接着出现还是之后出现。对于任何地方,请使用以下命令:

private String removeAnyDuplicates(String userWord) {
    return userWord.replaceAll("(.)(?=.*\\1)", "");
}
你可以试试这个

public static void main(String args[]){
    System.out.println(removeAnyDuplicates("HELLO"));
}

private static String removeAnyDuplicates(String userWord)
{
    char[] arr=userWord.toCharArray();
    List<String> list=new ArrayList<>();
    for(int i=0;i<arr.length;i++){
         if(!list.contains(String.valueOf(arr[i]))){
             list.add(String.valueOf(arr[i]));
         }
    }
    return list.toString().replaceAll("\\[|\\]|\\,","") ;
}

我假设删除重复项意味着结果最多包含一个字符。其他一些答案假设相邻的重复项只需减少为单个重复项。基本算法是:

private String removeAnyDuplicates(String userWord)
{
    String result = "";
    for (int i = 0; i < userWord.length(); ++i) {
        char c = result.charAt(i);
        if (result.indexOf(c) < 0) {
            // negative index indicates not present
            result += String.valueOf(c);
        }
    }
    return result;
}
将结果初始化为空字符串 循环输入的每个字符,如果该字符尚未出现在结果中,则将其附加到结果中 返回结果 一个幼稚且非常低效的实施将是:

private String removeAnyDuplicates(String userWord)
{
    String result = "";
    for (int i = 0; i < userWord.length(); ++i) {
        char c = result.charAt(i);
        if (result.indexOf(c) < 0) {
            // negative index indicates not present
            result += String.valueOf(c);
        }
    }
    return result;
}

始终将您尝试过的代码作为问题的一部分共享。欢迎使用StackOverflow!在这里,我们希望问题能够得到代码、原始研究、示例和有关您所面临的特定问题的其他信息的支持。提问前请先回答。请尝试解决方案,当您遇到特定问题时再回来。可能与输入ABA的功能重复?它应该返回AB还是ABA?“重复字母”一词似乎模棱两可;有几个答案假设它只表示相邻的重复项。这应该返回字符串而不是布尔值。这只会删除相邻的重复项。例如,它不会从ABABAB中删除重复项。这只会删除相邻的重复项。例如,它不会从ABABAB中删除重复项。@ted这不是他想要的吗?@TedHopp see edits,它可以工作,但删除了较早的重复项,而不是较晚的重复项,但仍然很优雅地履行了合同。不过,对于刚刚学习Java的人来说,我不确定这是否是正确的答案。可能读起来像某种魔法咒语。如果是学校作业,标准可能是ABA应该返回AB,而不是BA。但你是对的,它履行了合同规定的义务。
public static void main(String args[]){
    System.out.println(removeAnyDuplicates("HELLO"));
}

private static String removeAnyDuplicates(String userWord)
{
    char[] arr=userWord.toCharArray();
    List<String> list=new ArrayList<>();
    for(int i=0;i<arr.length;i++){
         if(!list.contains(String.valueOf(arr[i]))){
             list.add(String.valueOf(arr[i]));
         }
    }
    return list.toString().replaceAll("\\[|\\]|\\,","") ;
}
private String removeAnyDuplicates(String userWord)
{
    String result = "";
    for (int i = 0; i < userWord.length(); ++i) {
        char c = result.charAt(i);
        if (result.indexOf(c) < 0) {
            // negative index indicates not present
            result += String.valueOf(c);
        }
    }
    return result;
}
private String removeAnyDuplicates(String userWord)
{
    int len = userWord.length();
    StringBuilder result = new StringBuilder(len);
    Set<Character> unique = new HashSet<Character>();
    for (int i = 0; i < len; ++i) {
        char c = result.charAt(i);
        // try to add c to set of unique characters
        if (unique.add(c)) {
            // if it succeeds, this is the first time seeing c
            result.append(c);
        }
    }
    return result.toString();
}