2
public int openLock(String[] deadends, String target) {3
// Converted target to Integer type.4
int t = Integer.parseInt(target);5
HashSet<Integer> visited = new HashSet<>();7
// Converting deadend strings to Integer type. To prevent from visiting deadend, we already mark9
for (String str : deadends) {10
visited.add(Integer.parseInt(str));13
Queue<Integer> q = new ArrayDeque<>();14
// We make sure that 0 itself isn't a deadend15
if (visited.contains(0)) {21
while (q.size() > 0) {24
int elem = q.remove();28
// Will help check 4 digits of the element. From digit with low precendence(ones place) to29
// high precedence(thousands place)30
for (int i = 1; i < 10000; i = i * 10) {31
// The wheel can be rotated in two directions. Hence two numbers.34
// The wheel at 0 can become 1 or 9 due to wrapping.35
if (elem / i % 10 == 0) {39
// The wheel at 9 can become 0 or 8 due to wrapping.40
else if (elem / i % 10 == 9) {47
// Checking if numbers have already been visited.48
if (!(visited.contains(num1))) {52
if (!(visited.contains(num2))) {