Java在数组中比较字符串
给定一个字符串数组,返回数字最多的字符串,后跟字母x。如果两个字符串的数字相同,则返回索引最低的字符串
gooD({"1x","123456789","1y3534ssf","4hsd73s"}) → "1x"
gooD({"1xs3x3412fgxx6","1x+4x=5x","x5x"}) → "1x+4x=5x"
gooD({"3x2y11x3gx5x","","232","2x2xx3x3x"}) → "2x2xx3x3x"
我完全不明白为什么我的代码不起作用。为什么会这样
public String gooD(String arr[]) {
String digits="0123456789";
int low=0;
int check=0;
String s="";
String d="";
for (int i=0; i<arr.length; i++) {
s=arr[i];
for (int j=0; j<s.length()-1; j++) {
if (digits.indexOf(s.substring(j,j+1))!=-1) {
if (s.substring(j+1,j+2).equals("x")) {
d+=s.substring(j,j+1);
}
}
}
check=d.length();
if (check<low) low=check;
d="";
}
for (int i=0; i<arr.length; i++) {
s=arr[i];
for (int j=0; j<s.length()-1; j++) {
if (digits.indexOf(s.substring(j,j+1))!=-1) {
if (s.substring(j+1,j+2).equals("x")) {
d+=s.substring(j,j+1);
}
}
}
if (d.length()==low) return d;
d="";
}
return d;
}
# 1 楼答案
首先,您必须逆转您的测试:
应该是:
您的代码正在寻找最小值而不是最大值
接下来,您将不返回输入数组,而只返回直接后跟
x
的数字保留您的方法,一个可能的实现可能是:
# 2 楼答案
劳恩说了些什么。无论如何,这将是更有效的
# 3 楼答案
一个错误是
应该是哪一个
因为你正在寻找一个最大值
相当简单的是: