【发布时间】:2015-04-21 15:07:19
【问题描述】:
我正在处理CodingBat exercises for Java。我遇到了以下问题:
给定两个长度相同的包含字符串的数组,将一个数组中的第一个字符串与另一个数组中的第一个字符串进行比较,将第二个与第二个进行比较,依此类推。计算 2 个字符串非空且以相同字符开头的次数。字符串可以是任意长度,包括 0。
我的代码是这样的:
public int matchUp(String[] a, String[] b){
int count = 0;
for (int i = 0; i < a.length; i++) {
String firstLetterA = a[i].length() == 0
? "ê"
: a[i].substring(0, 1);
String firstLetterB = b[i].length() == 0
? "é"
: b[i].substring(0, 1);
if (firstLetterA.equals(firstLetterB)) {
count++;
}
}
return count;
}
我的问题是:使用哪个“占位符”字符可以避免firstLetterA 和firstLetterB 之间不必要的比较?
在这种情况下,我只是分配了两个很少使用的不同字母(至少在英语中)。我尝试只使用''(一个空字符,而不是空格),但当然,它们相互匹配。我还尝试对两者都使用null,因为我认为它无法进行正面比较,但这也会导致问题。
【问题讨论】:
-
为什么需要/需要占位符?为什么不只比较第一个字符,当字符串长度为零时再进行操作?
-
你可以用
charAt()代替substring(),所以它不会每次都创建一个新的String。 -
重要提示:如果使用重音字符等内容,此答案和已接受的答案不一定能正常工作,因为字符串之间的组合可能不同。这可能是也可能不是理想的行为。
标签: java arrays string compare