@coldknight You might have missed something. c is the char array being used to build strings representing strobogrammatic numbers. c will always be the first character of the string currently being built. The first character cannot be zero unless the number of digits in the strobogrammatic number we're currently trying to build is 1 (i.e. the length of c is 1). If the number of digits is 1, then the first digit is also the last digit, a number composed of a single digit where that digit is zero is the number zero, and zero is a strobogrammatic number.
if(c.length != 1 && c == '0') means "if the length isn't 1 and the first character is zero."
if(c.length != 1 && c == '0' && left==0) means "if the length isn't 1 and the first character is zero and we're currently deciding the value of the leftmost character in the string we're building." It's simply not necessary.
However, I do believe an argument could be made for this:
if(left==0 && c.length != 1 && c == '0')
so that the other two checks in the conditional expression are only executed when we're currently deciding the value of the leftmost character in the string we're building. Order matters in order to get the benefit of the short-circuiting boolean operators.