"给定两个字符串,如果其中一个字符串出现在另一个字符串的最末端,则返回true,忽略大小写差异(换句话说,计算不应该是"区分大小写& #34;)"
当我通过测试放置两个变量时,子字符串等于两个字符串中较短的一个,但它仍然在我的if语句中返回false。
这是我尝试编写关于字符串的蝙蝠的解决方案。我已将字符串存储为新字符串以消除区分大小写。可以在here找到该链接以供参考。1
public boolean endOther(String a, String b) {
String x = a.toLowerCase();
String y = b.toLowerCase();
int xl = a.length();
int yl = b.length();
if(xl > yl && x.substring(yl, xl).equals(y)) return true;
if(xl < yl && y.substring(xl, yl).equals(x)) return true;
if(xl == yl && x.equals(y)) return true;
else return false;
}
答案 0 :(得分:2)
您使用的子字符串的重载版本是不必要的,因为您需要做的就是检查其中一个字符串是否以另一个字符串结束。
xl
大于yl
,您只需要做的就是
x.substring(xl-yl).equals(y)
,表示您的子字符串应从xl-yl
开始,直到String
结束。xl
小于yl
,您只需要y.substring(yl-xl).equals(x)
,这意味着您的子字符串应从yl-xl
开始,直到String
结束}。完整解决方案:
public boolean endOther(String a, String b) {
String x = a.toLowerCase();
String y = b.toLowerCase();
int xl = a.length();
int yl = b.length();
if(xl > yl && x.substring(xl-yl).equals(y)) return true;
if(xl < yl && y.substring(yl-xl).equals(x)) return true;
if(xl == yl && x.equals(y)) return true;
else return false;
}
但是,如评论中所述,您最好使用String#endsWith。