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

字符串包含重复字符最长子串

今天我遇到一个问题,题目描述如下:         一个字符串,求这个字符串包含重复字符最长子串长度,如abba返回2,aaaaabc返回3,bbbbbbb返回1,等等上面是测试用例。...那么我解决这个问题思路有两种: 第一种是,设一个头指针和一个尾指针,头指针指向,包含重复字符子串第一个字符,尾指针指向包含重复子串最后一个字符,用一个hashset保存已经出现过字符,例如abba...,如果尾指针指向字符,在集合中没有出现,那么将这个字符放入结合,然后尾指针向后移动,这是尾指针会移动到第二个b位置,如果集合中已经包含了这个字符,那么用尾指针索引减去头指针索引,会求出一个子串长度...,如果该长度大于当前最大长度,那么就令当前最大长度等于目前长度,然后清空集合,头指针向后移动一个字符,尾指针再指向头指针,然后重复上面的过程,这样既可求出最大长度。...hashmap作为辅助,mapkey存储字符,value存储是该字符当前位置,首先设置一个头指针,指向字符串开头,那么从开始遍历字符串,如果map当中包含这个字符,那么用这个字符当前所在位置减去头指针位置

1.1K20

删除字符串所有相邻重复

例子 输入: "abbaca" 输出: "ca" 解释: 例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作重复项。...之后我们得到字符串 "aaca",其中又只有 "aa" 可以执行重复项删除操作,所以最后字符串为 "ca"。...解题思路 栈方法 比较典型一道栈方法题目 可以通过栈 后进先出 思路进行求解 由于最后结果返回字符串, 那么我们用字符串代替栈数组进行求解 例如: s = "abbaca", result...= "", 循环s每一个字符判断 i 是否与result最后一个字符相等, 相等移除最后一个字符, 不相等result添加i 第一次循环: i = a, result = "a" 第二次循环:...// result移除最后一个字符 result.removeLast() }else { // result拼接

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

LeetCode - 删除字符串所有相邻重复

S,重复项删除操作会选择两个相邻且相同字母,并删除它们。...在 S 上反复执行重复项删除操作,直到无法继续删除。 在完成所有重复项删除操作后返回最终字符串。答案保证唯一。...示例: 输入:"abbaca" 输出:"ca" 解释: 例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作重复项。...之后我们得到字符串 "aaca",其中又只有 "aa" 可以执行重复项删除操作,所以最后字符串为 "ca"。 提示: 1 <= S.length <= 20000 S 仅由小写英文字母组成。...首先将输入字符串包装为StringBuilder对象,然后一直从头遍历StringBuilder对象,找到重复字符串,就把这两个重复给删除,删除之后,再从头遍历该StringBuilder对象,直到遍历

3K20

删除字符串所有相邻重复

删除字符串所有相邻重复项 官方题解链接: 删除字符串所有相邻重复项 题目 给出由小写字母组成字符串 S,重复项删除操作会选择两个相邻且相同字母,并删除它们。...在 S 上反复执行重复项删除操作,直到无法继续删除。 在完成所有重复项删除操作后返回最终字符串。答案保证唯一。...示例: 输入:"abbaca" 输出:"ca" 解释: 例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作重复项。...之后我们得到字符串 "aaca",其中又只有 "aa" 可以执行重复项删除操作,所以最后字符串为 "ca"。 提示: 1 <= S.length <= 20000 S 仅由小写英文字母组成。...删除字符串所有相邻重复项 删除字符串所有相邻重复

1.9K20

删除字符串所有相邻重复

删除字符串所有相邻重复项 力扣题目链接[1] 给出由小写字母组成字符串 S,重复项删除操作会选择两个相邻且相同字母,并删除它们。 在 S 上反复执行重复项删除操作,直到无法继续删除。...在完成所有重复项删除操作后返回最终字符串。答案保证唯一。...之后我们得到字符串 "aaca",其中又只有 "aa" 可以执行重复项删除操作,所以最后字符串为 "ca"。 「提示:」 1 <= S.length <= 20000 S 仅由小写英文字母组成。...最终剩下元素所拼接成字符串就是没有相邻结果。这里每次循环都弹出一个字符,用来判断与接下来需要比较字符是否相等,如果相等则全部丢弃,继续判断下一个字符,如果不相等则按照顺序全部放入栈中。...也就是说,快指针负责不断往前走获取新字符,慢指针负责判断相邻元素是否重复,如果重复则丢弃,并在下一次将快指针元素覆盖到递减过慢指针元素上,从而继续判断相邻元素是否重复

1.7K20

删除字符串所有相邻重复项 II

删除字符串所有相邻重复项 II 给你一个字符串 s,「k 倍重复项删除操作」将会从 s 中选择 k 个相邻且相等字母,并删除它们,使被删去字符串左侧和右侧连在一起。...你需要对 s 重复进行无限次这样删除操作,直到无法继续为止。 在执行完所有删除操作后,返回最终得到字符串。 本题答案保证唯一。...不同是,这里是删除相邻重复k次项。...那么可以这么做: 遍历字符串每个字符元素, 如果栈为空,则直接放入栈中; 如果栈顶元素首项不等于当前元素,那么意味着不重复,则将元素放入栈中; 如果栈顶元素首项等于当前元素,但是栈顶元素字符串长度小于...k - 1,则依旧构成重复条件;因为算上当前元素加上k - 1才能达到相邻k项要求,因此将当前元素拼接到栈顶字符串后面,等待后续元素,如果后续元素刚好等于这个元素,就达到了消除条件; 如果栈顶元素首项等于当前元素

1.4K30

删除字符串所有相邻重复

删除字符串所有相邻重复项) https://leetcode-cn.com/problems/remove-all-adjacent-duplicates-in-string/ 题目描述 给出由小写字母组成字符串... S,重复项删除操作会选择两个相邻且相同字母,并删除它们。...在 S 上反复执行重复项删除操作,直到无法继续删除。 在完成所有重复项删除操作后返回最终字符串。答案保证唯一。  ...示例: 输入:"abbaca" 输出:"ca" 解释: 例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作重复项。...之后我们得到字符串 "aaca",其中又只有 "aa" 可以执行重复项删除操作,所以最后字符串为 "ca"。

1.4K20

python字符串重复

参考链接: Python字符串 python字符串重复 先将第一个字符串加入另一个空字符串“temp”;然后从第二个字符串开始与temp中已经加入字符串对比,若已经存在则不加入temp字符串,若无加入字符串...使用python实现  #只去除字符串两个字符组成重复字符串 #测试样例:派克盖伦诺手盖伦派克盖伦盖伦 #样例输出:派克盖伦诺手 str2="派克盖伦诺手盖伦派克盖伦盖伦" def Remove_Same...(str1) :     flag=0 #标记是否与加入元素相重合     temp=str1[0:2]     for i in range(1,int(len(str1)/2)):        ...=str1[2*i:2*i+2] :                  flag=1#若之前有元素想同则标记1                 break         if flag==0 :#无重复元素则加入...              temp=temp+str1[2*i:2*i+2]          else :#重复元素,flag置0进入下一个循环              flag=0     return

2K20

Python判断字符串是否包含字符串

大家好,又见面了,我是你们朋友全栈君。 Python如何判断一个字符串是否包含指定字符串?本文介绍Python判断一个字符串是否包含指定子串4种方法。具有一定借鉴价值。...第二种 使用字符串对象find()/rfind()、index()/rindex()、和count()方法 字符串属性自带方法 s = "Everyone has a world, quite and...()/rfind()方法 还可以使用另一种方法是字符串find方法。...与被计算为布尔值in运算符不同,find方法返回一个整数。 如果子字符串存在,则此整数本质上是子字符串开头索引,否则返回-1。...python2.7中用法 第四种:使用string模块index()/rindex()方法 index()/rindex()方法跟find()/rfind()方法相似,只不过在找不到子字符串时候会报一个

1.9K30

删除字符串所有相邻重复项 II(栈)

题目 给你一个字符串 s,「k 倍重复项删除操作」将会从 s 中选择 k 个相邻且相等字母,并删除它们,使被删去字符串左侧和右侧连在一起。...你需要对 s 重复进行无限次这样删除操作,直到无法继续为止。 在执行完所有删除操作后,返回最终得到字符串。 本题答案保证唯一。...示例 1: 输入:s = "abcd", k = 2 输出:"abcd" 解释:没有要删除内容。...栈解题 将当前字符和其连续个数存入栈中 个数达到 k 时出栈 k 个 class Solution { public: string removeDuplicates(string s, int...优化上面程序:相同不必压栈了,直接改pairsecond计数+1,减少压栈,弹栈时间 class Solution { public: string removeDuplicates(string

1.2K10

删除字符串所有相邻重复

1 题目描述 给出由小写字母组成字符串 S,重复项删除操作会选择两个相邻且相同字母,并删除它们。 在 S 上反复执行重复项删除操作,直到无法继续删除。 在完成所有重复项删除操作后返回最终字符串。...之后我们得到字符串 “aaca”,其中又只有 “aa” 可以执行重复项删除操作,所以最后字符串为 “ca”。...4 思路 充分理解题意后,我们可以发现,当字符串中同时有多组相邻重复项时,我们无论是先删除哪一个,都不会影响最终结果。因此我们可以从左向右顺次处理该字符串。...而消除—对相邻重复项可能会导致新相邻重复项出现,如从字符串abba 中删除bb会导致出现新相邻重复项aa出现。因此我们需要保存当前还未被删除字符。一种显而易见数据结构呼之欲出:栈。...我们只需要遍历该字符串,如果当前字符和栈顶字符相同,我们就贪心地将其消去,否则就将其入栈即可。 复杂度分析 ·时间复杂度:O(n),其中n是字符串长度。我们只需要遍历该字符串一次。

95920

【Leetcode -844.比较含退格字符串 -1047.删除字符串所有相邻重复项】

Leetcode -844.比较含退格字符串 题目:给定 s 和 t 两个字符串,当它们分别被输入到空白文本编辑器后,如果两者相等,返回 true 。# 代表退格字符。...strcmp(stackS, stackT); } Leetcode -1047.删除字符串所有相邻重复项 题目:给出由小写字母组成字符串 S,重复项删除操作会选择两个相邻且相同字母,并删除它们...在 S 上反复执行重复项删除操作,直到无法继续删除。 在完成所有重复项删除操作后返回最终字符串。答案保证唯一。...示例: 输入:“abbaca” 输出:“ca” 解释: 例如,在 “abbaca” 中,我们可以删除 “bb” 由于两字母相邻且相同,这是此时唯一可以执行删除操作重复项。...之后我们得到字符串 “aaca”,其中又只有 “aa” 可以执行重复项删除操作,所以最后字符串为 “ca”。 提示: 1 <= S.length <= 20000 S 仅由小写英文字母组成。

9610

【一天一道Leetcode】删除字符串相邻重复

题目描述: 给出由小写字母组成字符串 S,重复项删除操作会选择两个相邻且相同字母,并删除它们。 在S上反复执行重复项删除操作, 直到无法继续删除。 在完成所有重复项删除操作后返回最终字符串。...示例: 输入:"abbaca" 输出:"ca" 解释: 在 "abbaca" 中, 我们可以删除 "bb" 由于两字母相邻且相同, 这是此时唯一可以执行删除操作重复项。...之后我们得到字符串 "aaca", 其中又只有 "aa" 可以执行重复项删除操作, 所以最后字符串为 "ca"。 提示: 1. 1 <= S.length <= 20000 2....(注意:是需要删除两个相同字符) 2.删除字符串中两个相邻并且相同字符可能会产生新相邻并且相同字符。 比如题目中"abbaca"。...删除bb后,会产生新字符串aaca, 此时也需要将aa删除 最后字符串为ca 我们根据要点可知,并不能一次字符串删除操作就达到最终目的,我们需要每次删除完一对相邻相同字符后,再看新字符串是否存在相邻相同一对字符

1.8K00
领券