你如何使用for循环解决这个问题?哪个更好,for循环或只是lastIndexOf
?
以下是问题和三个测试用例:
给定两个字符串,如果其中一个字符串出现在另一个字符串的最末端,则返回true,忽略大小写差异(换句话说,计算不应该是"区分大小写") 。注意:str.toLowerCase()返回字符串的小写版本。
endOther(" Hiabc"," abc")→true
endOther(" AbC"," HiaBc")→true
endOther(" abc"," abXabc")→true
这是我的代码:
public boolean endOther(String a, String b) {
String newA = a.toLowerCase();
String newB = b.toLowerCase();
if(a.length() >= b.length() && newA.lastIndexOf(newB) == (a.length() - b.length() ) ) return true;
if(b.length() >= a.length() && newB.lastIndexOf(newA) == (b.length() - a.length() ) ) return true;
return false;
}
答案 0 :(得分:1)
代码如下,希望它可以帮到你。在想要对String执行某些操作之前,首先检查 java.lang.String 的本机方法。
public class Main {
public static void main(String[] args) {
System.out.println(endOther("Hiabc", "abc"));
System.out.println(endOther("AbC", "HiaBc"));
System.out.println(endOther("abc", "abXabc"));
}
public static boolean endOther(String a, String b){
a = a.toLowerCase();
b = b.toLowerCase();
if (a.length() >= b.length()) {
return a.endsWith(b);
}else {
return b.endsWith(a);
}
}
}
答案 1 :(得分:0)
如果您需要for循环,可以使用以下代码。
public static boolean check(String s1,String s2)
{
boolean result = false;
if(s1.length() >= s2.length())
{
result = compare(s1, s2);
}
else
{
result = compare(s2,s1);
}
return result;
}
public static boolean compare(String s1,String s2)
{
boolean result = false;
char[] array1 = s1.toCharArray();
char[] array2 = s2.toCharArray();
if(array1.length>=array2.length)
{
int j = array2.length-1;
for(int i = array1.length-1;i>=0;i--,j--)
{
if(j==0)
{
if(!(array1[i]==array2[j]))
{
break;
}
else
{
result = true;
break;
}
}
else
{
if(!(array1[i]==array2[j]))
{
break;
}
}
}
}
return result;
}
但@upma已经提供了更好的方法。