我对 Java 中的编程/算法问题还很陌生,我无法理解这种排序算法。
假设我在数组或数组列表中有多个 String
元素。
"She ate 10 eclair"
"She ate 99 donuts"
"She had 20 eclair"
"She had 10 eclair"
当我对这些字符串进行排序时,算法问题要我跳过数字并首先按字母顺序排序。像这样:
"She ate 99 donuts"
"She ate 10 eclair"
"She had 10 eclair"
"She had 20 eclair"
因此,当我使用常规 Collections.sort()
或 compareTo()
方法时,它涉及这些字符串中的数字。我很难用这种排序算法构建逻辑。
我看过自然排序方法,但我不确定我是否走在正确的轨道上,因为我是新手。
所以我要比较每个字符并检查当前索引是否为数字?还是我要将每个字符转换为十六进制值并像那样比较字符串?
Java 是否提供任何方法来帮助我解决这种分离问题?
任何帮助、指导、文档、片段都将不胜感激。
问候。
最佳答案
您可以在 Collections.sort()
方法中提供一个比较器,无论输入字符串中的任何数字如何,它都会进行排序:
List<String> list = ... ; //your list
Collections.sort(list, (a, b) -> a.replaceAll("[\\d]", "").compareTo(b.replaceAll("[\\d]", "")));
关于java - 按字母顺序对其中包含数字的字符串进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55702563/