いくつかのテストケースのための答えが間違ってきます

user13066649:

小文字の二つの文字列AとBを考えると、結果は答え以下B.FORのテストケースが間違って来ている等しくなるように、我々はAで2つの文字を入れ替えることができます場合にのみtrueを返します。

Input:
"aaaaaaabc"
"aaaaaaacb"
class Solution {
    public boolean buddyStrings(String A, String B)
    {
        int count=0,index=0;
        int a[] = new int[A.length()];
        if( A.length()!=B.length() )
            return false;
        if( A.equals(B) )
        {
            for(int i=0; i<A.length() ;i++)
            {
                if( A.charAt(0)==A.charAt(i) )
                    count++;
            }
            return( count==A.length() );
        }

        for(int i=0; i<A.length(); i++)
        {
            if(A.charAt(i) ! = B.charAt(i))
                a[index++] = i;
        }
         if( a.length==2 )
        {
            if(A.charAt(a[0])==B.charAt(a[1]) && A.charAt(a[1])==B.charAt(a[0]))
                return true;
            else
                return false;
        } 
        else
        return false;
    }
}
Shreya Malviya:

あなたのコードのこの部分が問題です。

if( A.equals(B) )
        {
            for(int i=0; i<A.length() ;i++)
            {
                if( A.charAt(0)==A.charAt(i) )
                    count++;
            }
            return( count==A.length() );
        }

A = B = "abcdefga" 場合を考えます。

あなたのコードによると、iときの条件は唯一すなわち、いったん成立している0から7までの値占めるi = 7ループが終了したときにカウントが1に等しくなるように、。あなたにはreturn声明、count == A.length()リターンfalse1 = / = 7理由。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=359946&siteId=1