文字列 "abbashbhqa"を持ってみましょう。出力が "abshq"になるように、重複する文字を削除する必要があります。考えられる解決策の1つは、各文字を文字列内の他の文字と照合して操作することです。しかし、これはO(n^2)時間の複雑さを必要とする。それを行うための最適化されたアプローチはありますか?文字列から重複する文字を削除するアルゴリズム
1
A
答えて
3
O(N)である:
はブール値のアレイL [26]を定義します。 allをFALSEに設定します。 新しい空の文字列を作成します。
文字列を移動し、L [x]がFALSEかどうかを確認します。その場合は、xを新しい文字列に追加し、L [x]を1に設定します。
新しい文字列を古い文字列にコピーします。
1
あなたが文字列を反復するとすぐにセット(またはハッシュセット)を作成します。アルファベットが制限されている場合(あなたの例のように英字)には、256のブール値配列を作成してASCIIコードをキーとして使用できます。出発点ですべてのブール値をfalseにする。 array []がfalseまたはtrueの場合にチェックする各反復。 falseの場合、シンボルは重複していないので、array [] = trueにマークし、文字列から削除してはいけません。場合それは本当 - シンボルが重複
0
は、おそらくこれは、上記の問題の実装になります
import java.util.*;
import java.io.*;
public class String_Duplicate_Removal
{
public static String duplicate_removal(String s)
{
if(s.length()<2)
return s;
else if(s.length()==2)
{
if(s.charAt(0)==s.charAt(1))
s = Character.toString(s.charAt(0));
return s;
}
boolean [] arr = new boolean[26];
for(int i=0;i<s.length();i++)
{
if(arr[s.charAt(i)-'a']==false)
arr[s.charAt(i)-'a']=true;
else
{
s= ((new StringBuilder(s)).deleteCharAt(i)).toString();
i--;
}
}
return s;
}
public static void main(String [] args)
{
String s = "abbashbhqa";
System.out.println(duplicate_removal(s));
}
}
0
私は、Pythonを使って解決していますし、それはO(n)の時間とO(n)の空間で動作します - 私はセットを使用しています()この場合、要素の順序が変更されます。 - オーダーを同じままにしたい場合は、OrderedDict()を使用することができ、O(n)時にも動作します。
関連する問題
- 1. 文字列から重複する文字を削除する
- 2. 文字列内に重複する文字を削除する
- 3. 文字列から重複する文字を削除するr
- 4. 文字列から重複する文字を削除する方法
- 5. Javaの文字列の重複文字を削除する
- 6. ハイブテーブルから文字列の重複を削除する方法
- 7. リストから重複した文字列を削除する
- 8. 文字列から重複単語を削除する
- 9. SQLの文字列から重複を削除する方法
- 10. 文字列から重複を削除する方法
- 11. Javaの文字列から重複を削除する
- 12. 文字列から複数の文字型を削除する
- 13. 重複する文字列と空の文字列を削除する
- 14. 文字列から大文字小文字を削除する
- 15. 文字列の配列から隣接する重複文字列を削除しますか?
- 16. 文字列と文字列をすべて文字列から削除する
- 17. C文字配列内の重複する文字を削除します。
- 18. 文字列から文字列を削除する方法
- 19. 文字列から文字列を削除するには?
- 20. 共通文字または重複文字列を削除する
- 21. ASP文字列から重複した単語を削除
- 22. 文字列ファイルから重複する単語を削除する
- 23. Kotlin - 配列から重複した文字列を削除する慣用句?
- 24. Javaの文字列から重複文字を削除するにはどうすればよいですか?
- 25. ASP - 文字列から二重引用符を削除する
- 26. 文字列C++から一重引用符を削除する
- 27. Python:文字列から文字を削除する
- 28. 文字列からランダムな文字を削除する
- 29. Javascript - 文字列から特定の文字を削除する
- 30. 文字列からNULL文字を削除する方法
ルックアップテーブルに追加する(これはリピートを破棄する) eオーダー。最初の出現順に出力します。 –
downvotingの前にコメントしてください。 –
@Borisルックアップテーブルは何ですか? –