888. 有效单词词广场*

888. 有效单词词广场

中文English

给定一个单词序列,检查它是否构成一个有效单词广场。
一个有效的单词广场应满足以下条件:对于满足0≤k<max(numRows numColumns)k,第k行和第k列对应的字符串应该相同,。

样例

样例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".

因此,这不是一个有效的单词广场.

注意事项

给定的单词数量至少为1,且不超过500
单词长度至少为1,不超过500
每个单词只包含小写英文字母a-z

 
 
输入测试数据 (每行一个参数)如何理解测试数据?
    '''
    大致思路:
    1.单次循环words,进行竖向拼接,如果当前字符串长度不够,则不拼接此字符
    2.初始化res,然后每次循环完毕就会append进res里面,最后的时候判断是否相等就可以
    '''
    def validWordSquare(self,words):
        res = []
        j = 0
        ##外层循环
        for i in range(len(words)):
            current_s = ''
            z = 0
            for j in range(len(words)):
                #必要判断,存在当前字符串长度不够问题,比如第四行,dt,不存在第四列
                if len(words[j]) > i:
                    ##里面是根据[1][0],[2][0],[3][0]这样加的,然后下一次循环是第二位变化,第一位不变
                    current_s += words[j][i]
            res.append(current_s)
        if res == words:
            return True
        return False
原文地址:https://www.cnblogs.com/yunxintryyoubest/p/12571470.html