2
public int kSimilarity(String s1, String s2) {3
HashSet<String> vis = new HashSet<>();5
ArrayDeque<String> queue = new ArrayDeque<>();9
while (queue.size() > 0) {10
int size = queue.size();11
for (int i = 0; i < size; i++) {13
String rem = queue.remove(); // remove15
if (vis.contains(rem)) { // Mark*20
if (rem.equals(s2)) { // Work25
for (String s : getNeighbors(rem, s2)) {26
if (!vis.contains(s)) {36
public ArrayList<String> getNeighbors(String rem, String s2) {37
ArrayList<String> res = new ArrayList<>();40
for (int i = 0; i < rem.length(); i++) {41
if (rem.charAt(i) != s2.charAt(i)) {47
for (int j = idx + 1; j < rem.length(); j++) {48
if (rem.charAt(j) == s2.charAt(idx)) {49
String s = swap(rem, idx, j);57
public String swap(String str, int i, int j) {58
StringBuilder sb = new StringBuilder(str);59
char chi = sb.charAt(i);60
char chj = sb.charAt(j);