Задача. Квадрад слов
Задача. Верните true, если он образует правильный квадрат слов. То есть последовательность строк образует правильный квадрат слов, если в k-й строке и столбце читается одна и та же строка, где 0 <= k < max(numRows, numColumns).
Входные данные: размер массивов от 1 до 500, количество массивов от 1 до 500. Элементы массивов - прописные буквы английского алфавита.
Разбор
Так как нам нужно проверить все слова в матрице, то нам придется делать полный проход по матрице. Единственное, что мы можем оптимизировать - мгновенный выход из циклов, если мы нашли 1-ю "ошибку" в правильном квадрате слов.
Условием для выхода будем набор нескольких условий: если текущая строка/столбец больше чем размер текущего слова или если words[i][j] != words[j][i].
Реализация
public static bool CheckWordSquare(List<string> words) { int len = words.Count; for(int i = 0; i < len; i++) { for(int j = 0; j < words[i].Length; j++) { if (j >= len || words[j].Length <= i || words[j][i] != words[i][j]) return false; } } return true; }
https://gist.github.com/unilecs/06daa2fc302d2b7f0f1630b8d4c523df