首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

给定一个字符串,找到包含该字符串所有字符的最短子串

这题是豌豆荚二面的一个算法题,和leetcode的某些题目类似。...其思路是这样的 首先遍历一次字符串,求出字符串不同字符的数目 为每一个字符保存一个列表,记录该字符在字符串中出现的索引 记录待求字符串的首字母的索引start(初始值为0),结束索引end(初始值为length...-1) 记录可能的待求字符串的首字母的索引值为pStart(初始值为0) 重新遍历字符串,当前索引为index 更新没有遍历的字符的数目,更新当前字符对应的索引列表。...如果pStart处字符对应的列表长度大于1,则从索引列表中移出pStart,并将pStart加1,并重复该过程 如果index处字符是第一次出现,则将剩余字符数目减一 如果剩余字符数目为0时,且子字符串...int start = 0, end = str.length() - 1; // 记录目标字符串的开始位置 int pStart = 0; Map<Character

58810
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    2025-01-07:删除星号以后字典序最小的字符串。用go语言,给定一个字符串 s,其中可能包含任意数量的 ‘*‘ 字符。 我

    2025-01-07:删除星号以后字典序最小的字符串。用go语言,给定一个字符串 s,其中可能包含任意数量的 '*' 字符。 我们的目标是移除所有的 '*' 字符。...在字符串中只要还有至少一个 '*' 字符,我们可以执行以下操作: 1.删除最左侧的 '*' 字符。 2.同时,删除一个字典序最小的字符。如果存在多个字典序最小的字符,任选其一删除。...最终,我们需要返回在删除所有 '*' 字符后,剩余字符连接成的字典序最小的字符串。 1 <= s.length <= 100000。 s 只含有小写英文字母和 '*' 字符。...输入保证操作可以删除所有的 '*' 字符。 输入:s = "aaba*"。 输出:"aab"。 解释: 删除 '*' 号和它左边的其中一个 'a' 字符。...大体步骤如下: 1.创建一个空字节切片 s,将给定字符串 S 转换为字节数组存储在 s 中,并初始化一个空的二维切片 st,用来记录字符串中每个字母的索引位置。

    4410

    Python 技巧十则

    字符串拼接 当需要拼接字符串时,可以使用for循环通过逐个添加每个元素来实现。但这非常低效,特别是如果列表很长的话更加明显。...让我们解决通常称为Fizz Buzz问题的经典编码面试问题: 编写一个程序来打印列表中的数字,以“ 3”的倍数打印“fizz”而不是数字,以“ 5”的倍数打印“buzz”,并以3和5的倍数打印“fizzbuzz...用 zip 处理列表 假设有这样一个任务:合并多个具有相同长度的列表并打印出结果。同样,有一种更通用的方法,用zip()获得结果,如以下代码所示: 5....要创建一个计数器对象,将一个可迭代的(列表)传递给Counter() 函数,如下面的代码所示。...将两个列表转换成字典 假设有两个列表,一个列表包含学生的姓名,第二个列表包含他们的分数。让我们看看如何将这两个列表转换为一个字典。使用zip函数,可以使用以下代码完成此操作: 8.

    1.1K10

    Python基础-数据类型【含Demo代码】

    4.3、列表 列表是任意对象 的有序集合,可通过索引访问指定元素,索引从0开始,依次递增,-1表示最后一个元素。列表中的元素类型可不同,可同时包含数字、字符串等数据类型。...('打印列表list1的第一个元素: ', list1[0]) # 打印列表list1的最后一个元素 print('打印列表list1的最后一个元素: ', list1[-1])...# 将列表list1的第一个元素修改为'new' list1[0] = 'new' # 循环打印列表list1的所有元素 print('循环打印列表list1的所有元素: ')...打印元组tup1的最后一个元素 print('打印元组tup1的最后一个元素: ', tup1[-1]) # 循环打印元组tup1的所有元素 print('循环打印元组tup1的所有元素...', 123, 22.5] 打印列表list1的第一个元素: python 打印列表list1的最后一个元素: 22.5 循环打印列表list1的所有元素: new 123 22.5 打印元组tup1

    8310

    400多人刷过的一道Python题目

    一起来看一下今天的题目吧! 给定一个字符串,寻找没有字符串重复的最长子字符串。...请注意答案必须是一个子串,“pwke”是子序列,而不是子串。 下面是我写的代码 #!...下面主要是讲一下代码中涉及到的知识点。 代码解析: (1)range函数,在Python3中返回的是一个可迭代对象,而不是列表类型,所以打印的时候不会打印列表。...append(obj),obj是添加到列表末尾的对象 需要注意的是,该方法无返回值,但是会修改原来的列表。 (3)python中的yield。...简要理解,yield就是return返回一个值,并且记住这个返回的位置,下一次迭代就从这个位置后(下一行)开始。 (4)sorted函数,对所有可迭代的对象进行排序操作。

    65460

    Python编程:从入门到实践(选记)「建议收藏」

    注意  方法 remove() 只删除第一个指定的值。如果要删除的值可能在列表中出现多次,就需要使用循环来判断是否删除了所有这样的值。...4.4.3  复制列表 要复制列表,可创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引( [:] )。...指定要打印的所有内容 后,在 print 语句的最后一行末尾加上右括号。 6.3  遍历字典 一个 Python 字典可能只包含几个键 — 值对,也可能包含数百万个键 — 值对。...我们创建了一个列表,其中包含我们要通过打印消息,指出其喜欢的语言的朋友。在循环中,我们打印每个人的名字,并检查当前的名字是否在列表 friends 中。...方法 keys() 并非只能用于遍历;实际上,它返回一个列表,其中包含字典中的所有键,因此代码行只是核实 ‘erin’ 是否包含在这个列表中。

    6.4K50

    Component之Kernel Shell的命令

    我一般先试试help ? Kernel Shell里调用命令时,可以省略包含参数的括号,而且默认会给该命令补充10个0作为参数。...strFree(char *string) - 释放Shell里动态分配的字符指针。参数为0,则打印当前所有字符指针;参数为-1,则释放所有指针。 ?...lkup(char *substr) - 打印系统符号表中所有包含字符串substr的符号。substr为0时,仅打印符号表的基本信息;为空字符串""时,打印所有符号。...,int arg8) - 测试函数func的执行时长,func可带8个参数。func为NULL时,测试由timexFunc(), timexPre(),和timexPost()创建的函数列表。...,int arg8) - 创建测试之后需调用的函数列表。 timexShow() - 打印需要测试的函数列表 ? ioHelp 需包含组件INCLUDE_DISK_UTIL IO与文件系统操作 ?

    83630

    让代码变得优雅简洁的神器:Java8 Stream流式编程

    假设有一个黑名单手机号列表,需要筛选出其中所有开头为“133”的元素,那么可以通过filter()实现—— //将数组转换为一个字符串列表 List numbers = Arrays.asList...根据以下两个案例分别学习map()将元素转换为另一个元素以及提取元素其中的信息—— 2.2.1、转换元素 假设有一个手机号字符列表,需要根据前7位来确定手机号归属地,那么就需要获取所有手机号前7...: [5, 6, 7, 6, 7, 8, 7, 8, 9] 2.3.2、将多个列表合并成一个列表 假设有一个包含多个手机号字符串列表的列表,现在需要合并所有手机号字符串成为一个列表,可以使用...假设有一个包含多个手机号字符串的列表,需要统计去重后的手机号数量,就可以使用count方法—— List numbers = Arrays.asList("13378520000",...假设有一个包含多个手机号字符串的List列表,需要在去重之后,再将列表所有字符串拼按照逗号间隔接成一个字符串返回,那么就可以通过reduce来实现—— List numbers = Arrays.asList

    4.3K10

    Python字典、集合之高山流水

    (dict_.setdefault("新增")) # 打印如下内容: 我是新增的 fromkeys(字典键列表,值):如果值是列表,是可变的,那么如果更改列表中的值会影响整个字典键中的值。...如果我们想要字符串需要进行如下转换: dict_ = {"电视剧":"霍元甲","电影":"黄飞鸿"} list_key = list(dict_.keys()) # 将键先转换成列表 str_ =...可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典的,还有set集合的值必须是不可变的如:整型、字符串、元祖不能是列表...add(list_) # 因为列表是可变的,所以不能用作集合的值 # 打印内容如下: TypeError: unhashable type: 'list' 更新 update(可迭代对象):向集合中添加可迭代数据...: False frozenset(可迭代对象):返回一个冻结的集合.被冻结的集合不能进行修改,删除,添加等操作.如果不写参数,则返回一个冻结的空的集合.参数是可迭代对象所以可以是列表,字典等 下面是一些简单的事例

    71220

    绘制图表(1):初次实现

    使用字符串格式设置功能可打印出漂亮的输出,如分列打印数字。然而,在有些情况下,仅使用纯文本还不够。(俗话说,一图胜千言。)...在这里,我设置了参数textAnchor,它指定要将字符串的哪部分放在坐标指定的位置。 4.2.绘制折线 为绘制太阳黑子数据折线图,需要绘制一些直线。实际上,你需要绘制多条相连的直线。...ReportLab提供了一个专门用来完成这种工作的类——PolyLine。 要创建折线(PolyLine对象),需要将第一个参数指定为一个坐标列表。...pred = [row[2]for row in data] pred将是一个列表,其中包含第3列的所有值。...请注意,这里使用zip将时间和值合并成了元组列表。 4.3.编写原型 现在可以编写程序的第一个版本了,其源代码如图所示。 ? 如你所见,为了正确的定位,我调整了值和时间戳。生成的图形如图所示。 ?

    2K20

    Python文件和异常(一)

    该列表被赋给变量 lines 。在 with 代码块外,依然可使用这个变量。使用一个简单的 for 循环来打印 lines 中的各行。...首先,创建一个字符串,它包含文件中存储的所有数字,且没有任何空格: filename = 'pi_digits.txt' with open(filename) as file_object:...,首先打开文件,并将其中所有的行都存储在一个列表中。...这个字符串长32字符,因为它还包含整数部分的3和小数点: 3.141592653589793238462643383279 32 注意:读取文本文件时,Python 将其中的所有文本都解读为字符串。...如果我们有一个文本文件,其中包含精确到小数点后1000000位而不是30位的圆周率值,也可创建一个包含所有这些数字的字符串。为此,无须对前面的程序做任何修改,只要将这个文件传递给它即可。

    8110

    现学现用的 10 个 Python 技巧

    连接字符串 你需要连接字符串列表时,可以通过逐个添加每个元素、使用for loop来实现此目的。但这么做效率很低,列表很长的话更是如此。...编写一个程序来打印输出列表中的数字;如果是“3”的倍数,输出“fizz”,而不是输出数字;如果是“5”的倍数,输出“buzz”;如果同时是3和5的倍数,输出“fizzbuzz”。...处理列表时使用zip 假设你被赋予一项任务,合并长度相同的多个列表,并打印输出结果?...由于('Team 1','Team 2')和('Team 2','Team 1')代表同一对,所以输出列表中仅包含其中一个。...将两个列表转换成字典 假设我们有两个列表,一个列表包含学生的姓名,第二个列表包含学生的分数。不妨看看如何将这两个列表转换成一个字典。

    93621

    Java Stream流详解

    names 包含四个字符串元素,然后使用流式操作处理这个列表。...具体来说,它使用 forEach() 方法遍历列表中的所有元素,并对每个元素执行打印操作。 其中,四个字符串元素按顺序打印到了控制台上。...numbers,使用流式操作筛选出所有偶数,然后将它们收集到一个新的列表 evenNumbers 中,并打印输出。...注意到,虽然列表 names 中包含了一个以字母 “B” 开头的元素 “Brian”,但是它不是所有元素都以 “B” 开头,因此 allMatch() 方法返回 false,最终被打印输出到了控制台。...注意到,列表 names 中不包含任何一个以字母 “E” 开头的元素,因此 noneMatch() 方法返回 true,最终被打印输出到了控制台。

    29930

    Python函数(二)

    在函数中对这个列表所做的任何修改都是永久性的,这让你能够高效地处理大量数据。 来看一家为用户提交的设计制作3D打印模型的公司。需要打印的设计存储在一个列表中,打印后将移到另一个表中。...下面是在不使用函数的情况下模拟这个过程的代码: #首先创建一个列表,其中包含一些要打印的设计。...:一个需要打印的设计列表和一个打印好的模型列表。...(二)禁止函数修改列表 有时候,需要禁止函数修改列表。例如,假设像前一个示例那样,有一个未打印的设计列表,并编写了一个函数将这些设计移到打印好的模型列表中。...描述性名称可帮助你和别人明白代码想要做什么。给模块命名时也应遵循上述约定。 每个函数都应包含简要地闸述其功能的注释。该注释应紧跟在函数定义后面,并采用文档字符串格式。

    3800

    自动添加标签(1):初次实现

    你不想手工添加需要的所有标签,想编写一个程序来自动完成这项工作。...---- 2.有用的工具 想想编写这个程序需要哪些工具。 肯定需要读写文件,至少要从标准输入(sys.stdin)读取以及使用print进行输出。 可能需要迭代输入行。 需要使用一些字符串方法。...生成文本块时,将其包含的所有行合并,并将两端的空白(如列表项缩进和换行符)删除,得到一个表示文本块的字符串。(如果不喜欢这种找出段落的方法,你肯定能够设计出其他方法。...我将这些代码存储在文件util.py中,这意味着你稍后可在程序中导入这些生成器。 4.2.添加一些标记 使用这些基本功能,可创建简单的标记脚本。为此,可按如下基本步骤进行。...(1)打印一些起始标记。 (2)对于文本块,在段落标签内打印它。 (3)打印一些结束标记。 这不太难,但用处也不大。这里假设要将第一个文本块放在一级标题标签(h1)内,而不是段落标签内。

    1.5K40

    【python系统学习08】for循环知识点合集

    ', 'nameEn'   print(dictName[name]) # 2次循环依次打印出'小石头', 'xing.org1^' 字符串 字符串也可以被for循环遍历,打印的将是每一个字符。...打印循环的次数取决于字符串的字符个数。...# range: 1 # range: 2 # range: 3 # range: 4 可以看到另一个规律,在range括号里,逗号前边的数字被迭代时是包含的,右边的不包含。...那么如果我想迭代字典时,有个变量存放列表中各项所对应的偏移量(索引)呢? 通过range函数的搭配,我们不仅可以迭代整数,还能迭代列表的索引。 于是我就试了下边的写法,但是他报错了。...for循环后边的else都没执行。所以只打印了0、1、2。 思考题 创建一个从1到100的整数列表 用for循环打印1-100 九九乘法表 用for循环打印一个九九乘法表。

    1.4K60
    领券