gpt4 book ai didi

java - 不使用 compareTo 的排序算法

转载 作者:行者123 更新时间:2023-11-30 11:07:08 25 4
gpt4 key购买 nike

我正在做一项家庭作业,要求我比较两个字符串并确定它们是否按字母顺序排列。

我计划编写一个方法,它将两个字符串作为参数,(String a, String b) 并返回 1、0 或 -1(因此,一个 int),表示 a > b、a < b、或其他情况(0 情况)。

例如,比较 ("boogie", "orange") 将返回 -1。因为,布吉<橙色。

到目前为止我的代码是

public static int compare(String a, String b) {
for (int i = 0; i < a.length(); i++) {
for (int j = 0; j < b.length(); j++) {
char cha = a.charAt(i);
char chb = b.charAt(j);
if (cha < chb) {
return -1;
} else if (cha > chb) {
return 1;
}
}
return 0;
}
}

但是,我遇到了很多错误并且无法找到错误的修复方法。我也很难找到一个代码来衡量一个词是否比另一个词长(这会影响字母顺序)有人可以帮我调试代码并指出正确的方向吗?

非常感谢。

最佳答案

您不需要嵌套循环,因为您不想将一个字符串的每个字符与另一个字符串的每个字符进行比较。

你只需要一个循环:

public static int compare(String a, String b)
{
int len = Math.min (a.length(),b.length());
for (int i = 0; i<len; i++) {
char cha = a.charAt(i);
char chb = b.charAt(i);
if (cha < chb) {
return -1;
} else if (cha > chb) {
return 1;
}
}
if (a.length() < b.length())
return -1;
else if (a.length() > b.length())
return 1;
else
return 0;
}

关于处理不同长度的字符串,如果发现2个字符串中较短的字符串等于较长字符串的前缀,则如果a是较短的字符串则返回-1,如果b较短则返回1(因为较短的字符串应该在较长的字符串之前)。

关于java - 不使用 compareTo 的排序算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29040618/

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