-6

言語 : Java キー ノート: *For ループまたは While ループを使用して文字列をループ処理する必要があります *文字列の重複する文字を削除し、重複のない単語を返します。

例: 文字列は HELLO です。この場合、メソッドはループして重複を削除します。この場合は " L " で、最後に HELO を返します。

私はこれまでのところこれを持っています

private String removeAnyDuplicates(String userWord)
{
   //Code goes here?
   return "" ; // Need to return the new string
}
4

6 に答える 6

1

正規表現でそれを行うことができます。例えば:

private static final Pattern REGEX_PATTERN = 
        Pattern.compile("(.)\\1*");

public static void main(String[] args) {
    String input = "HELLO, AABBCC";

    System.out.println(
        REGEX_PATTERN.matcher(input).replaceAll("$1")
    );  // prints "HELO, ABC"
}
于 2013-08-25T05:52:26.050 に答える
0

文字列を char の配列に変換し、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();
    }

覚えて:

import java.util.LinkedHashSet;
import java.util.Set;
于 2013-08-25T05:56:16.050 に答える
0

このワンライナーを試してください:

private String removeAnyDuplicates(String userWord) {
    return userWord.replaceAll("(.)\\1+", "$1");
}

これは、正規表現を使用して、繰り返される (2 つ以上の) 文字を検索し、それらを文字の 1 つのインスタンスに置き換えます。


「繰り返し」が直後に現れることを意味するのか、それともその後のどこかに現れることを意味するのかは不明です。どこでも、これを使用します。

private String removeAnyDuplicates(String userWord) {
    return userWord.replaceAll("(.)(?=.*\\1)", "");
}
于 2013-08-25T05:58:50.183 に答える
0
private String removeAnyDuplicates(String userWord)
{
    CharSequence inputStr = userWord;
    int length = inputStr.length();
    Set<Character> uniqueChars = new HashSet<Character>();

    for(int i=0; i < length; ++i) {
        uniqueChars.add(inputStr.charAt(i));
    }

    return uniqueChars.size() >= 3;
}

この答えをチェックしてください

于 2013-08-25T05:55:12.153 に答える
0

これを試すことができます

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("\\[|\\]|\\,","") ;
}
于 2013-08-25T06:02:46.040 に答える