如何使用for循环解决此练习?

时间:2014-12-30 05:34:09

标签: java

你如何使用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;
}

2 个答案:

答案 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已经提供了更好的方法。