如果我知道的字符串不超过2个不同的字符,
示例集:
aab
abbbbabb
bbbaa
aaaaaaa
aaaa
abab
a
aa
aaaaa
aaabba
aabbbab
将它们按字母顺序排列的最有效方法是什么?
生成的排序集:
a
aa
aaaa
aaaaa
aaaaaaa
aaabba
aab
aabbbab
abab
abbbbabb
bbbaa
编辑:
我知道我可以使用正常的排序算法(快速排序,合并排序),但问题是:不超过2个不同字符的事实会使其他更有效的事情吗?
如果字符串的最大长度很重要,我想知道两种不同场景的答案:
字符串的最大长度与字符串数相同(n个正在排序的字符串,n个字符串的最大长度)
字符串的最大长度为log n,n为要排序的字符串数
我还可以假设所有字符串都是不同的。
答案 0 :(得分:-1)
String compareTo或compareToIgnoresCase方法将返回一个负整数,0或一个polsitive整数,具体取决于所比较的两个字符串的字母顺序。试试吧。
答案 1 :(得分:-1)
仅基于渐近比较的一般排序算法无法比O(nlogn)
更好地获得结果。在您的情况下,有一个额外的信息(2个不同的字符),有可能改善这一结果。一种产生O(n)
结果的简单方法:
x
)。x
时会增加一个计数器。y
)第一次将其存储在专用变量中x
和y
。
如果x < y
根据计数器从x
开始填充字符串,其余部分填入y
如果x > y
从y
的{{1}}的广告位开头填充字符串,其余字符为string length-num of x
。