Sam*_*nch 3 java puzzle algorithm words comparator
好的,所以我有一个程序,其中包含一个我需要的部分"命令单词,使列表中每个项目的最后一个字母是下一个项目的第一个字母,一种由最后一个和第一个链接在一起的单词链字母".
样品输入是狗,大象,长颈鹿,犀牛,老虎,正确的输出是狗,长颈鹿,大象,老虎,犀牛,而我的输出是老虎,犀牛,狗,长颈鹿,大象.
比较器是这样的:
class linkedSort implements Comparator {
//will return 1 for a match
//returns 0 if no match
public int compare(Object t, Object t1) {
char[] charArr1 = t.toString().toCharArray();
char[] charArr2 = t1.toString().toCharArray();
if (charArr1[charArr1.length - 1] == charArr2[0]) {
return -1;
} else {
return 1;
}
}
}
Run Code Online (Sandbox Code Playgroud)
任何帮助都会很有帮助!!
tem*_*def 10
您无法通过简单的比较器和排序来解决这个问题,因为比较并未定义总排序.总订单是以下四个属性所包含的订单:
您的订单不是全部订单.首先,它打破了反身性:例如,"a"≤"a".其次,它打破了反对称性:"缓和"≤"前夕"和"前夕"≤"轻松".第三,它打破了传递性:"东"≤"茶"和"茶"≤"aver",但"东"≤"aver"是假的.最后,它不是完全的:"东"不小于"西","西"不小于"东".
要解决此问题,您需要采用不同的方法.作为提示,您可能希望将问题视为一个图形,其中字母是节点,而单词是连接起始字母和结束字母的边缘.你能在这张图中找到一条路径,它只访问每个边缘一次吗?
希望这可以帮助!