【发布时间】:2017-09-06 09:57:54
【问题描述】:
我被要求检查String a 在字典上是否大于String b。所以甚至在考虑compareTo() 方法之前,我就有了一个新想法。
- 取 a 和 b 长度中的最小值。
- 迭代一个 for 循环直到最小长度,并将每个字符的
ascii的总和分别存储在 a 和 b 中。 - 比较
ascii以打印结果。
这是我的代码
private static void isInLexicographicOrder(String a, String b) {
char[] arr1 = a.toCharArray();
int asciCount1 = 0;
char[] arr2 = b.toCharArray();
int asciCount2 = 0;
long asciLength = (a.length() < b.length()) ? a.length() : b.length();
for(int i=0; i<asciLength; i++) {
asciCount1 += arr1[i];
asciCount2 += arr2[i];
}
if(asciCount1 < asciCount2) {
System.out.println("In Lexicographic Order");
}
else {
System.out.println("Not In Lexicographic Order");
}
}
我提供的许多输入都可以正常工作,然后我找到了这个链接String Comparison in Java,所以为了确认我在我的代码中使用了比较方法。
System.out.println((a.compareTo(b)) < 0 ? "In Lexicographic Order" : "Not In Lexicographic Order");
现在当我提交代码时,另一个网站说代码在一个测试用例中失败
示例输入
vuut
vuuuuu
他们希望输出为No,即Not In Lexicographic Order。但我的逻辑和compareTo() 逻辑说In Lexicographic Order。那么怎么了,我的逻辑完全正确吗?
这是我获得Question. 的链接,如果我错了,抱歉
【问题讨论】:
标签: java string string-comparison compareto lexicographic