L8:查找排序习题

本文介绍了三个关于查找和排序的编程题目。首先是一个判断字符串是否为重新排列问题,然后是一个在特定排序规则的二维列表中查找数字的问题,最后是寻找列表中两个数之和等于特定整数的下标。每个题目都附带了相应的代码实现。
摘要由CSDN通过智能技术生成

题目1

  • 给两个字符串s和t,判断t是否为s的重新排列后组成的单词
    • s = 'anagram', t = 'nagaram', return ture
    • s = 'rat', t = 'car', return false

代码:

def isAnagram(s, t):
    '''
    :type s: str
    :type t: str
    :rtype: bool
    '''

    #1
    ss = list(s)
    tt = list(t)
    ss.sort()
    tt.sort()
    return ss == tt

    #2 
    return sorted(list(s)) == sorted(list(t))

    #3 O(n)
    dict1 = {} #{'a':1, 'b':2}
    dict2 = {}
    for ch in s:
        dict1[ch] = dict1.get(ch, 0) + 1
    for ch in t:
        dict2[ch] = dict2.get(ch, 0) + 1
    return dict1 == dict2

题目2

  • 给定一个m*n的二维列表,查找一个数是否存在。列表有以下特性:
    • 每一行的列表从左到右已经升序排序好
    • 每一行第一个数比上一行最后一个数大

代码:


                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值