import java.util.*;
public class Solution {
public boolean validWordSquare(List<String> words) {
if (words == null) return false;
int row = words.size();
int col = words.get(0).length();
if (row != col) return false;
for (int i = 1; i < row; i++) {
if (words.get(i).length() > row) return false; //["abc","bde","cefg"]
StringBuilder sb = new StringBuilder();
for (int j = 0; j < i; j++) {
String str = words.get(j);
if (i < str.length()) {
sb.append(words.get(j).charAt(i));
} else {
sb.append('#'); // ["ball","asee","let","lep"]
}
}
String prefix = sb.toString();
StringBuilder word = new StringBuilder(words.get(i));
while(word.length() < prefix.length()) {
word.append("#");
}
if (!word.toString().startsWith(prefix)) return false;
}
return true;
}
}
public class Solution {
public boolean validWordSquare(List<String> words) {
if(words == null || words.size() == 0){
return true;
}
int n = words.size();
for(int i=0; i<n; i++){
for(int j=0; j<words.get(i).length(); j++){
if(j >= n || words.get(j).length() <= i || words.get(j).charAt(i) != words.get(i).charAt(j))
return false;
}
}
return true;
}
}