我只想获得删除重复项的帮助。到目前为止我有这个,但它不会删除或删除多次出现的单词。
void antUnikOrd() {
int unikCount = 0;
String c = "ahfuwa";
for(int i = 0; i<a.length;i++) {
for(int j= 0;j<a.length;j++) {
if(a[i].equals(a[j])) {
unikCount++;
}
if(unikCount>1) {
a[j] = c;
unikCount = 1;
}
unikCount = 0;
}
for( i = 0;i<a.length;i++) {
//if(a[i] != " ") {
System.out.println(a[i]);
// }
}
}
答案 0 :(得分:1)
如果你不被允许使用额外的内存,以及非常方便的Java套件,那么你可以做一个让你想做的事情,即O(NlogN),而不是你提出的明显的O(N ^ 2)解决方案
1 - Sort the array of words (Arrays.sort(~) will do the trick in O(nlogn)).
2 - For each word in the sorted array look if the next one is equal. (one loop)
a - TRUE = set to delete current word from array (not the next one, keep that one)
b - FALSE = go on to next
3 - Write to file by ignoring the detect duplicates. (one more loop)
解释第2点:
array = [ a, b, b, c, d, d, d ]
ITERATIONS
- a != b -> [ a, b, b, c, d, d, d ] index = 0
- b == b -> [ a, X, b, c, d, d, d ] index = 1
- ...
- d == d -> [ a, X, b, c, X, d, d ] index = 4
- d == d -> [ a, X, b, c, X, X, d ] index = 5
- d is last so we stop
现在我们过滤Xs:
[a, b, c, d]
这实际上是O(nlogn + 2n),可以简化为O(nlogn)。
祝好运,但应该相当简单。 如果你不能使用Arrays.sort(〜)实现你自己的排序函数,我建议使用QuickSort或MergeSort,因为它们决定了这个解决方案的整体性能。
答案 1 :(得分:0)
您可以将元素存储到自动删除重复的HashSet中
答案 2 :(得分:0)
您可以将字符串添加到HashSet中,它会删除重复项。
答案 3 :(得分:0)
当你替换文件中的文本时,我经常将整个文件读入内存,做我想做的任何操作,然后将它们全部写回文件。我不喜欢分发答案,所以我会给你类似的东西。例如,在伪代码中:
public void removeWord(String word)
{
fileReader := FileReader(the file to read)
lines := Java HashSet object
for every line in the file {
// Cycle through each line and load into the HashSet
lines.add(current line)
}
// You now have a whole bunch of different lines.
fileReader.close();
// Unlock the file.
fileWriter := FileWriter(the file to write in overwrite mode)
for every line in lines
{
fileWriter.write(line)
}
fileWriter.flush() // To be safe..
fileWriter.close() // to prevent memory leaks.
}
答案 4 :(得分:0)
问题有点不清楚,但我会假设您希望阅读文件的内容,删除重复项并将其写回文件。
获得文件内容后(请参阅此问题以获取指南:Reading a plain text file in Java),然后从列表中删除重复项的最简单方法是将它们放入集合中:
List<String> lines = readFromFile(); // complete this method
Set<String> uniqueLines = new HashSet<String>(lines);
一旦您拥有一组独特的行,您只需将它们写回文件(请参阅此问题以获取指南:How do I create a file and write to it in Java?)