gpt4 book ai didi

java - 使用 charAt() 而不使用compareTo() 方法按字典顺序比较两个字符串

转载 作者:行者123 更新时间:2023-12-01 13:46:34 24 4
gpt4 key购买 nike

如果第一个字符串按字典顺序大于第二个字符串,则应返回 1,如果相等则返回 0,否则 -1。在某些情况下正确返回 1、-1、0,但对于此 str1 和 str2 则返回结果与期望的输出相反。

public class StringCompare {

static String testcase1 = "helloworld";
static String testcase2 = "hellojavaworld";

public static void main(String args[]) {
StringCompare testInstance = new StringCompare();
int result = testInstance.newCompare(testcase1, testcase2);
System.out.println("Result : " + result);
}

// write your code here
public int newCompare(String str1, String str2) {

int l1 = str1.length();
int l2 = str2.length();
int max = 0;
if (l1 <= l2) {
max = l1;
}
else
max = l2;
int count = 0;

for (int i = 0; i < max; i++) {
char ch1 = str1.charAt(i);
char ch2 = str2.charAt(i);

if (str2.charAt(i) > str1.charAt(i)) {
return - 1;
}

if (str1.charAt(i) > str2.charAt(i)) {
return 1;

}
if (l1 == l2) {
if (ch1 == ch2) {
count++;
}
if (count == max) {
return 0;
}
}

}
if (l1 == l2) return 0;
if (l1 > l2)
return 1;
else
return - 1;

}

}

最佳答案

这是一个简化的答案

public class TestStrings {

public static void main(String[] args) {

System.out.println(compare("Mike", "Mike")); // returns 0
System.out.println(compare("Mikee", "Mike")); // returns 1
System.out.println(compare("Mike", "Mikee")); // returns -1
}

public static int compare(String s1, String s2) {
for (int i = 0; i < Math.min(s1.length(), s2.length()); i++) {
char c1 = s1.charAt(i);
char c2 = s2.charAt(i);

if (c1 > c2) {
return 1;
} else if (c2 > c1) {
return -1;
}
}

if (s2.length() > s1.length()) {
return -1;
} else if (s1.length() > s2.length()){
return 1;
} else {
return 0;
}
}
}

我使用了一个循环,停止条件是最短单词的长度。如果最短单词的长度之后的单词相等,则较长的单词会自动变大。这就是底部的 if 语句的用途。

关于java - 使用 charAt() 而不使用compareTo() 方法按字典顺序比较两个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20328810/

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