bool buddyStrings(char * A, char * B){ char a,b,cnt=0; int len1=strlen(A), len2=strlen(B), i, hash[26]={0}; if(len1 != len2) return false; if(strcmp(A,B)){ for(i=0; i<len1; i++){ if(A[i] != B[i]){ cnt++; if(cnt==1){ a=A[i]; b=B[i]; } else if(cnt==2){ if(A[i] != b || B[i] != a) return false; } else if(cnt>2) return false; } } } else{ for(i=0; i<len1; i++){ if(++hash[A[i]-'a']==2) return true; } return false; } return (cnt>1)?true :false; }