有效单词词广场——算法面试刷题5(for google),考察数学
给定一个单词序列,检查它是否构成一个有效单词广场。
一个有效的单词广场应满足以下条件:对于满足0≤k<max(numRows numColumns)
的k
,第k
行和第k
列对应的字符串应该相同,。
给定的单词数量至少为1,且不超过500
。
单词长度至少为1,不超过500
。
每个单词只包含小写英文字母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