class Solution {
public:
bool validWordSquare(vector<string>& words) {
}
};
422. 有效的单词方块
给你一个单词序列,判断其是否形成了一个有效的单词方块。
有效的单词方块是指此由单词序列组成的文字方块的 第 k 行 和 第 k 列 (0 ≤ k < max(行数, 列数)) 所显示的字符串完全相同。
注意:
a-z
。
示例 1:
输入: [ "abcd", "bnrt", "crmy", "dtye" ] 输出: true 解释: 第 1 行和第 1 列都是 "abcd"。 第 2 行和第 2 列都是 "bnrt"。 第 3 行和第 3 列都是 "crmy"。 第 4 行和第 4 列都是 "dtye"。 因此,这是一个有效的单词方块。
示例 2:
输入: [ "abcd", "bnrt", "crm", "dt" ] 输出: true 解释: 第 1 行和第 1 列都是 "abcd"。 第 2 行和第 2 列都是 "bnrt"。 第 3 行和第 3 列都是 "crm"。 第 4 行和第 4 列都是 "dt"。 因此,这是一个有效的单词方块。
示例 3:
输入: [ "ball", "area", "read", "lady" ] 输出: false 解释: 第 3 行是 "read" ,然而第 3 列是 "lead"。 因此,这 不是 一个有效的单词方块。
原站题解
golang 解法, 执行用时: 0 ms, 内存消耗: 3 MB, 提交时间: 2023-10-15 18:06:42
func validWordSquare(words []string) bool { n:=len(words) pl:=n for i:=0;i<n;i++{ s:=words[i] if len(s)>pl { return false } if len(s)<len(words) && len(words[len(s)])>i{ return false } for j:=0;j<len(s);j++{ if len(words[j])<=i|| s[j]!=words[j][i]{ return false } } pl=len(s) } return true } func validWordSquare2(words []string) bool { for i, word := range words { var j int for _, w := range words { if i < len(w) { if j >= len(word) { return false } // 内容是否相等 if word[j] != w[i] { return false } j++ } } // 长度是否相等 if j != len(word) { return false } } return true }
python3 解法, 执行用时: 40 ms, 内存消耗: 17.2 MB, 提交时间: 2023-10-15 18:06:03
class Solution: def validWordSquare(self, words: List[str]) -> bool: max_len = max(len(word) for word in words) words = [word + (max_len - len(word))* "#" for word in words] tempt = zip(*words) words_ = ["".join(item) for item in tempt] return words_ == words