给定一个字符串列表/数组:
document
document (1)
document (2)
document (3)
mypdf (1)
mypdf
myspreadsheet (1)
myspreadsheet
myspreadsheet (2)
如何删除所有重复项但仅保留最高的副本数?
最终结果为:
document (3)
mypdf (1)
myspreadsheet (2)
最佳答案
您提出了一个广泛的问题,所以这里有一个不具体(但仍然)“完整”的答案:
- 迭代所有字符串以识别包含大括号的所有行。
- 换句话说:识别所有看起来像“X (n)”的字符串
- 然后,对于找到的每个“不同”X,您可以再次迭代列表;这样您就可以找到所有出现的“X”、X (1)”、..等等
- 这样做可以让您检测到每个 X 的最大值 n。
- 将“最大值”“X (n)”插入结果列表中。
也就是说:只需要这么简单的一张收据就可以解决这个问题;现在只需要您花时间将这些伪代码指令转换为真实代码。
郑重声明:如果您的文件布局确实如上所示,那么事情会变得容易一些 - 因为您的数字似乎只是在增加。我的意思是:
X (1)
X (2)
X (3)
比治疗更容易
X (1)
X (3)
X (2)
就您的情况而言,似乎可以假设最后 X(n) 包含最大的 n。这使得使用 HashMap(按照 cainiaofei 的建议)成为一个很好的解决方案。
关于java - 如何删除列表中相似的命名字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40656938/