gpt4 book ai didi

java - 如何最好地将 String.compareTo() 结果限制为 -1、0 和 1?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:55:16 26 4
gpt4 key购买 nike

我意识到,如果 string2 按字母顺序排在 string1 之前,则 string1.compareTo(string2) 的结果将为 -1 或更小的数字,如果另一个方向不同,则为 1 或更大的数字。我只需要返回 -1、0 或 1。

我可以用一种看似笨拙的方式对其进行编码,但我觉得必须有一种更有效/更优雅的方式来做到这一点。任何帮助将不胜感激!

String s1 = "aardvark";
String s2 = "zebra";
int c = s1.compareTo(s2); // -25
if (c > 0) {
c = 1;
} else if (c < 0) {
c = -1;
}

是否有某种数学运算可以将所有正整数更改为 1,将所有负整数更改为 -1?


编辑:我不得不说,我很高兴提出了一个没有被否决和删除的问题,但是迅速而明智的回答非常棒。以下是我到目前为止测试过的答案。我想与后来的人分享我的成果。

我的测试代码:(以不同的值运行每个解决方案大约 2600 次)

String s1 = "";
String s2 = "m";
for (int i = 0; i < 100; i++) {
for (char j = 'a'; j < 'z'; j++) {
s2 = ("" + j);
solution1(s1.compareTo(s2));
}
}

我的原始代码:~1.5ms

if (c > 0) {
c = 1;
} else if (c < 0) {
c = -1;
}

解决方案 1:~4 毫秒

c = (int) Math.signum(c);

解决方案 2:~2ms

c = c > 0 ? 1 : c < 0 ? -1 : 0;

解决方案 3:~2ms

c = Math.max(-1, Math.min(1, c));

解决方案 4:~2ms

c = Integer.compare(c, 0);

我比我的原作更喜欢它们,所以谢谢大家。由于速度和可读性,解决方案 4 获得了复选标记,因此特别感谢您。

最佳答案

其实很简单:

return Integer.compare(s1.compareTo(s2), 0);

关于java - 如何最好地将 String.compareTo() 结果限制为 -1、0 和 1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29426916/

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