gpt4 book ai didi

java - 与 .equals() 比较时,两个相等的字符串返回 false

转载 作者:行者123 更新时间:2023-12-02 02:50:28 28 4
gpt4 key购买 nike

“给定两个字符串,如果其中一个字符串出现在另一个字符串的最末尾,则返回 true,忽略大小写差异(换句话说,计算不应“区分大小写”)。”

当我对这两个变量进行测试时,子字符串等于两个字符串中较短的一个,但在我的 if 语句中它仍然返回 false。

这是我对有关字符串的 bat 编码解决方案的尝试。我已将字符串存储为新字符串以消除区分大小写。链接可以找到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;
}

最佳答案

考虑到您所要做的就是检查其中一个字符串是否以另一个字符串结尾,因此您正在使用的子字符串的重载版本是不必要的。

  • 如果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 .

关于java - 与 .equals() 比较时,两个相等的字符串返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43927552/

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