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()
リターンfalse
1 = / = 7理由。