gpt4 book ai didi

java - 一个不使用compare.To按字母顺序对字符串进行排序的程序(Java)

转载 作者:行者123 更新时间:2023-12-01 11:47:02 26 4
gpt4 key购买 nike

我正在尝试编写一个程序,该程序应该按字母顺序对两个字符串进行排序,如果 s1 在 s2 之前,则返回 -1,如果 s1 在 s2 之后,则返回 1,如果它们是相同的单词,则打印 0因此,对于 s1 = "king"和 s2 = "kink",它应该打印 -1。我已经成功地针对不以同一字母开头的单词实现了这一点,但对于不以同一字母开头的单词,例如“king”和“kink”,我遇到了困难。

public static int compare(String a, String b)
{

int comparison = 0;
int c1, c2;
for(int i = 0; i < a.length() && i < b.length(); i++)
{
c1 = (int) a.toLowerCase().charAt(i);
c2 = (int) b.toLowerCase().charAt(i);
comparison = c1 - c2;

if(comparison == 0)
{
if(a.length() > b.length())
return 1;
else if (a.length() < b.length())
return -1;
else
return 0;
}
else if (comparison > 0)
return 1;
else
return -1;

}

return comparison;
}

我觉得问题出在我的 for 循环上,我不允许它遍历整个字符串,但我不确定如何修复它。

最佳答案

public static int compare(String a, String b) {
if (a == null) {
return b == null ? 0 : -1;
} else if (b == null) {
return 1;
}
String alow = a.toLowerCase();
String blow = b.toLowerCase();
int len = Math.min(a.length(), b.length());
for (int i = 0; i < len; i++) {
int d = alow.charAt(i) - blow.charAt(i);
if (d != 0) {
return d < 0 ? -1 : 1;
}
}
int diff = a.length() - len;
if (diff != 0) {
return diff < 0 ? -1 : 1;
}
return 0;
}

关于java - 一个不使用compare.To按字母顺序对字符串进行排序的程序(Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29069053/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com