lintcode入门篇五

158. 两个字符串是变位词

写出一个函数 anagram(s, t) 判断两个字符串是否可以通过改变字母的顺序变成一样的字符串。

样例

样例 1:

输入: s = "ab", t = "ab"
输出: true

样例 2:

输入:  s = "abcd", t = "dcba"
输出: true

样例 3:

输入:  s = "ac", t = "ab"
输出: false

挑战

O(n) 的时间复杂度, O(1) 的额外空间

说明

什么是 Anagram?

  • 在更改字符顺序后两个字符串可以相同

输入测试数据 (每行一个参数)如何理解测试数据?

class Solution:
    """
    @param s: The first string
    @param t: The second string
    @return: true or false
    """
    def anagram(self, s, t):
        # write your code here
        for element in s:
            if element in t:
                t = t.replace(t[t.index(element)],‘‘,1)      ##t = t.replace(element,‘‘,1)和前面的t[t.index(element)]一样的意思
                s = s.replace(s[s.index(element)],‘‘,1)
        if len(t) == 0:
            return  True
        return  False

大致思路:

首先有s和t两个字符串

1.循环s字符串每个字符element,如果s字符串的字符在字符串t中也出现的话,s和t都将移除掉公共的字符elemnt,replace(element,‘‘,1)后面的1代表的是只会移除掉一个值,不会过多移除。如果后面不加参数1,则默认会将全部相同的字符element都替换成‘‘。

2.循环完字符串s所有的字符之后,下一步开始判断len(t)的字符串长度是否移除成功(判断len(s)和len(t)两者之间并无差别),如果len(t)==0的话,则说明移除成功,返回true,否则的话说明还存在不同的或者多余的值,则返回false。

原文地址:https://www.cnblogs.com/yunxintryyoubest/p/12355388.html

时间: 2024-08-19 14:26:51

lintcode入门篇五的相关文章

【SSRS】入门篇(五) -- 设置报表格式

原文:[SSRS]入门篇(五) -- 设置报表格式 在上一节 [SSRS]入门篇(四) -- 向报表添加数据 我们设置好了报表,并可以预览到数据,如下图: 当报表完成后,有个重要的工作就是美化报表格式,这一节将讲解: 设置日期格式 设置货币格式 更改文本样式和列宽 设置日期格式:默认情况下,Data字段显示日期和时间信息:这边我们格式设置为中文日期. 1.单击"设计"选项页: 2.右键单击字段[Date],在弹出的菜单单击"文本框属性": 3.单击"数字&

lintcode入门篇十五

846. 多关键字排序 中文English 给定 n 个学生的学号(从 1 到 n 编号)以及他们的考试成绩,表示为(学号,考试成绩),请将这些学生按考试成绩降序排序,若考试成绩相同,则按学号升序排序. 样例 样例1 输入: array = [[2,50],[1,50],[3,100]] 输出: [[3,100],[1,50],[2,50]] 样例2 输入: array = [[2,50],[1,50],[3,50]] 输出: [[1,50],[2,50],[3,50]] class Solut

lintcode入门篇二

一. 最大子数组 给定一个整数数组,找到一个具有最大和的子数组,返回其最大和. 样例 样例1: 输入:[−2,2,−3,4,−1,2,1,−5,3] 输出:6 解释:符合要求的子数组为[4,−1,2,1],其最大和为 6. 样例2: 输入:[1,2,3,4] 输出:10 解释:符合要求的子数组为[1,2,3,4],其最大和为 10. 挑战 要求时间复杂度为O(n) 注意事项 子数组最少包含一个数 输入测试数据 (每行一个参数)如何理解测试数据? 第一种解法:O(n)时间复杂度 class Sol

redis的入门篇---五种数据类型及基本操作

查看所有的key keys * 清空所有的key flushall 检查key是否存在 exists key 设置已存在的key的时长 expire key 10 //设置key为10s 查看key还剩多少时长 ttl key //-1是永久 -2是不存在 查看key的类型 type key 随机取出一个key randomkey 重命名key rename key newkey //如果key存在 直接覆盖 renamenx key newkey //如果key存在 则失败 返回0 设置一定时

lintcode入门篇一

1.反转一个只有3位数的整数. 样例 样例 1: 输入: number = 123 输出: 321 样例 2: 输入: number = 900 输出: 9 注意事项 你可以假设输入一定是一个只有三位数的整数,这个整数大于等于100,小于1000. class Solution: """ @param number: A 3-digit number. @return: Reversed number. """ def reverseIntege

lintcode入门篇三

一. 两数之和 给一个整数数组,找到两个数使得他们的和等于一个给定的数 target. 你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标.注意这里下标的范围是 0 到 n-1. 样例 Example1: 给出 numbers = [2, 7, 11, 15], target = 9, 返回 [0, 1]. Example2: 给出 numbers = [15, 2, 7, 11], target = 9, 返回 [1, 2]. 挑战 Either of the

lintcode入门篇四

142. O(1)时间检测2的幂次 用 O(1) 时间检测整数 n 是否是 2 的幂次. 样例 Example 1: Input: 4 Output: true Example 2: Input: 5 Output: false 挑战 O(1) time 第一种方法:&的方法 class Solution: """ @param n: An integer @return: True or false """ ''' 1.使用递归的方法来

lintcode入门篇六

185. 矩阵的之字型遍历 给你一个包含 m x n 个元素的矩阵 (m 行, n 列), 求该矩阵的之字型遍历. 样例 样例 1: 输入: [[1]] 输出: [1] 样例 2: 输入: [ [1, 2, 3, 4], [5, 6, 7, 8], [9,10, 11, 12] ] 输出: [1, 2, 5, 9, 6, 3, 4, 7, 10, 11, 8, 12] class Solution: ''' 1.首先i,j都不能小于0,并且i<len(matrix) and j<len(mat

lintcode入门篇七

211. 字符串置换 给定两个字符串,请设计一个方法来判定其中一个字符串是否为另一个字符串的置换. 置换的意思是,通过改变顺序可以使得两个字符串相等. 样例 Example 1: Input: "abcd", "bcad" Output: True Example 2: Input: "aac", "abc" Output: False class Solution: """ @param A: