有效单词词广场——算法面试刷题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

  

原文地址:https://www.cnblogs.com/bonelee/p/10796849.html

时间: 2024-10-06 22:41:13

有效单词词广场——算法面试刷题5(for google),考察数学的相关文章

有效的括号序列——算法面试刷题4(for google),考察stack

给定一个字符串所表示的括号序列,包含以下字符: '(', ')', '{', '}', '[' and ']', 判定是否是有效的括号序列. 括号必须依照 "()" 顺序表示, "()[]{}" 是有效的括号,但 "([)]" 则是无效的括号. 您在真实的面试中是否遇到过这个题? 样例 样例 1: 输入:"([)]" 输出:False 样例 2: 输入:"()[]{}" 输出:True 挑战 O(n)的时间

算法面试:精选微软等公司经典的算法面试100题 第1-40题

精选微软等公司,数据结构+算法,经典面试100题                            --------之前40题 -------------------------- 算法面试:精选微软等公司经典的算法面试100题 第1-40题如下: --------------- --------------1.把二元查找树转变成排序的双向链表 题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表.要求不能创建任何新的结点,只调整指针的指向.      10  / \ 6 14 

算法面试课程笔记000 玩转算法面试 leetcode题库分门别类详细解析

算法面试课程笔记 =============================================================================== 本文地址 : =============================================================================== liuyubobobo老师 <<玩转算法面试 leetcode题库分门别类详细解析>> 为了面试,更为了提升你的算法思维 http:/

888. 有效单词词广场*

888. 有效单词词广场 中文English 给定一个单词序列,检查它是否构成一个有效单词广场.一个有效的单词广场应满足以下条件:对于满足0≤k<max(numRows numColumns)的k,第k行和第k列对应的字符串应该相同,. 样例 样例1 输入: [ "abcd", "bnrt", "crmy", "dtye" ] 输出: true 解释: 第一行和第一列都是“abcd”. 第二行和第二列都是“bnrt”.

微软等数据结构+算法面试100题全部答案集锦

1.把二元查找树转变成排序的双向链表. 题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表. 要求不能创建任何新的结点,只调整指针的指向. 10  / \  6 14  / \ / \  4 8 12 16 转换成双向链表 4=6=8=10=12=14=16. 首先我们定义的二元查找树节点的数据结构如下: struct BSTreeNode  {  int m_nValue; // value of node  BSTreeNode *m_pLeft; // left child

最全BAT算法面试100题:阿里、百度、腾讯、京东、美团、今日头条

第一:复杂度估算和排序算法(上)1) 时间复杂度和空间复杂度 2)认识对数器 3)冒泡排序 4)选择排序 5)插入排序 6)如何分析递归过程的时间复杂度 7)归并排序 8)小和问题 第二:复杂度估算和排序算法(下)1)荷兰国旗问题 2)随机快速排序 3)堆结构与堆排序 4)认识排序算法的稳定性 5)认识比较器 6)桶排序 7)计数排序 8)基数排序 9)数组排序后的最大差值问题 10)排序算法在工程中的应用 第三:章栈.队列.链表.数组和矩阵结构1)栈结构 2)队列结构 3)链表结构 4)数组结

python入门、python数据分析(numpy、matplotlib、sklearn等)tensflow、爬虫、机器学习、深度学习、自然语言处理、数据挖掘、机器学习项目实战、python全栈、PHP、java、java web、openCV、hadoop、matlab、android、数据结构算法和刷题等教学视频

扫描二维码加好友购买视频,绝对优惠,谢谢支持. python入门和进阶熟练教学视频 入门: 进阶: python数据分析教学视频 python数据分析晋级班 tensorflow教程及实战 python爬虫教学 机器学习课程 深度学习课程 机器学习项目班 自然语言处理教学视频 python全栈教学视频 数据挖掘视频 PHP教学视频 java java web openCV教学视频 Hadoop教学视频 matlab教学 andriod教学视频 数据结构算法班及面试班 原文地址:https://w

算法比赛+刷题小技巧总结

算法总结 --由于刚开始写一些正规的算法题,所以写下这些东西来记录自己学的新东西 1.针对数据比较大的数,long类型的数据已经满足不了了,所以需要使用long long型数据,一般在题目条件中都有暗示. 用法:long long a; scanf("%lld",&bb); 2.常用库函数调用: a)       #include<algorithm> i.            常用函数:max(); ii.            sort(a,a+n,bmp);

2016年10月15日 算法竞赛刷题所得

1.开灯问题 a[i] = !a[i] 赋相反的值: 注意输入输出: 2.错位输入 常量字符串的使用getchar 3.回文词 常量字符串申明 isalpha()函数的使用 运用两个变量决定字符串在二维字符数组中的位置 4猜数字游戏提示 表示无限循环与while(1)相似,需要在中途通过break跳出 5.最小字典序问题 运用循环比较最优字典序