文字列から隣接する重複を削除

ラファエル・ゴンサルベス:

私は、文字列を受信して、隣接する重複を削除する関数を記述する必要があります。
例:
入力- > "aabbaabbcccaaa"
出力- > "ababca"

次のように私はそれを解決しようとしました。

public String remdups(String input) {
    String response = "";
    char temp;
    int i, length = input.length();

    for(i = 0; i < length; i++) {
        temp = input.charAt(i);
        response += temp;

        while(i < length && input.charAt(i) == temp) i++;
    }
    return response;
}

しかし、それはそうです、時間の複雑さが期待されていないようことを、どのように私はもパフォーマンスを向上させることができたり、より良いアプローチがどうなりますか?私はそれが本当に簡単な問題だけど、私は改善する方法や、それを行うための別の方法を見つけることができません。

JBX:

私にはあなたのコードは、ビューの複雑さの点から、すでによさそうです。それは一度だけ文字列を通過しています。あなたができる最適化は応答にあるString使用してStringBuilder、そして多分ちょうど読みやすくするためにループを少し簡略化していない(2つのネストされたループの必要性を、そしてインクリメントi2ヶ所からのカウンターは、ミスを導入する可能性)。

public String remdups(String input) {
  StringBuilder response = new StringBuilder(input.length());
  char temp;

  for (int i = 0; i < input.length(); i++) {
     char next = input.charAt(i);
     if (temp != next) {
       temp = next;
       response.append(temp);
     }
  }

  return response.toString();
}

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=313566&siteId=1