给定一个单词序列,检查它是否构成一个有效的单词广场。有效的单词广场应满足以下条件:满足要求0≤k<max(numRows numColumns)
的k
,第k
行和第k
列对应的字符串应相同。
给定的单词数量至少为1,且不超过1500
。单词长度至少为1,不超过1500
。每个单词只包含小写英文字母a-z
。
你在真实的面试中遇到过这个问题吗?是的
题目纠错
样例样例1
输入: [ "abcd", "bnrt", "crmy", "dtye"]输出: true解释:第一行和第一列都是“abcd"。第二行和第二列都是“bnrt"。第三行和第三列都是“crmy"。第四行和第四列都是“dtye因此,这是一个有效的单词广场.
样例2
输入:[ "abcd", "bnrt", "crm", "dt"]输出: true解释:第一行和第一列都是“abcd"。第二行和第二列都是“bnrt"。第三行和第三列都是“crm"。第四行和第四列都是“dt因此,这是一个有效的单词广场.
样例3
输入: [ "ball", "area", "read", "lady"]输出: false解释:第三行是 "read" 但第三列是 "lead".因此,这不是一个有效的单词广场.
class Solution: """ @param words: a list of string @return: a boolean """ def validWordSquare(self, words): # Write your code here r,c = len(words), len(words[0]) if r != c: return False for i in range(r): for j in range(i+1, r): if words[i][j] != words[j][i]: return False return True
参考代码:
class Solution: """ @param words: a list of string @return: return a boolean """ def validWordSquare(self, words): # write your code here n, m = len(words), len(words[0]) if(n != m): return False for i in range(n): for j in range(m): if(j >= n or i >= m or not(words[i][j] == words[j][i])): return False return True