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

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

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

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

删除字符串所有相邻重复

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

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 上反复执行重复项删除操作,直到无法继续删除。...在完成所有重复项删除操作后返回最终字符串。答案保证唯一。...示例1: 输入:"abbaca" 输出:"ca" 解释: 例如,在 "abbaca" ,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作重复项。...思路: 本题可以使用栈思路来解决。依次将字符串字符放入栈,同时判断栈顶元素是否与当前字符相等,如果相等,则弹出栈顶元素;如果不相等则将当前字符放入栈顶。...最终剩下元素所拼接成字符串就是没有相邻项结果。这里每次循环都弹出一个字符,用来判断与接下来需要比较字符是否相等,如果相等则全部丢弃,继续判断下一个字符,如果不相等则按照顺序全部放入栈

1.7K20

Linuxcrontab输出重定向生效问题解决办法

cron配置文件称为“crontab”,是“cron table”简写。 近期在crontab添加了一个定时任务,该任务执行之后默认会有正常输出。.../test.sh & test.log 以上命令非常好理解,每天9:01执行test.sh 脚本并且将脚本标准错误输出、标准输出全部重定向到文件 test.log。...为了解决和解释这个问题,接下来我们先简单介绍下linux系统重定向问题 概念 Linux系统: 1: 表示标准输出(stdout),默认输出到屏幕 2:表示标准错误输出(stderr),默认输出到屏幕...bash test.sh test.out 2 test.out //标准输出和标准错误输出都写入到test.out,会出现互相覆盖问题,正常情况推荐这样使用 bash test.sh & test.out...这是因为, bash test.sh 2 &1 test.out 这个命令, 2 &1 时候,只是把错误输出重定向到了标准输出,而此时标准输出默认值是屏幕,因此实际等价于标准错误输出被重定向到了屏幕

1.7K41

Linuxcrontab输出重定向生效问题解决方法

cron配置文件称为“crontab”,是“cron table”简写。 近期在crontab添加了一个定时任务,该任务执行之后默认会有正常输出。.../test.sh &>>test.log 以上命令非常好理解,每天9:01执行test.sh 脚本并且将脚本标准错误输出、标准输出全部重定向到文件 test.log。...为了解决和解释这个问题,接下来我们先简单介绍下linux系统重定向问题 概念 Linux系统: 1: 表示标准输出(stdout),默认输出到屏幕 2:表示标准错误输出(stderr),默认输出到屏幕...bash test.sh >test.out 2>test.out //标准输出和标准错误输出都写入到test.out,会出现互相覆盖问题,正常情况推荐这样使用 bash test.sh &>test.out...这是因为, bash test.sh 2>&1 >test.out 这个命令, 2>&1 时候,只是把错误输出重定向到了标准输出,而此时标准输出默认值是屏幕,因此实际等价于标准错误输出被重定向到了屏幕

2.7K32

使用Python输出字符串数字个数代码

输出字符串数字个数方法要通过Python代码来统计某一个句子或某一篇文章(程序专业术语称为字符串数字个数是多少,可以通过Python字符串内置方法isdigit()来判断,但是,这个方法是判断字符串对象是否全部为数字...,不包括负号和正号,所以,为了统计字符串数字有多少个,就应当使用for循环来遍历(当然,也可以使用Python其它迭代方式)该字符串,然后逐个字符来判断是否为数字,如果是,则返回True,那么计数器就可以跟着...如此,待循环结束就可以得到字符串数字个数了。输出字符串数字个数函数设计代码接下来就将使用Python代码来实现上面的方法了。...而为了能够将Python代码重复利用,高效利用,接下来,就将Python输出字符串数字个数代码封装为一个函数。...原文:Python输出字符串数字个数免责声明:内容仅供参考!

24420

删除字符串所有相邻重复

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

1.4K20

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

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

1.4K30

java如何输出一个某种编码字符串

面试题汇总链接 Java后端面试知识点汇总 先上案例,先上案例 看不懂不要紧,看案例后解析 public String translate (String str) {...System.err.println(e.getMessage()); } return tempStr; } 解释: str.getBytes() ,这个方法就是返回str...字符串在当前系统默认编码字符串,之后再加上参数就是返回该字符串指定参数默认编码字符串,str.getBytes(“ISO-8859-1”) 就是返回ISO-8859-1这个编码格式字符串。...new String(str.getBytes(“ISO-8859-1”), “GBK”) 这个就是把前边字符串转换成第二个参数指定GBK格式字符串。...拓展: 如果你只想得到某个字符串指定编码格式字节数组,需要注意在获取字节数组语句要写到捕获异常语句中,Eg:try catch 或者在方法上抛出异常 Eg:throws UnsupportedEncodingException

1.7K20

React.js 实战之 JSX 简介在 JSX 中使用表达式JSX 本身其实也是一种表达式JSX 属性JSX 嵌套JSX 防注入攻击JSX 代表 ObjectsJSX 怪异之处

在下节会详细介绍元素是如何被渲染出来 先来看看 JSX 基本使用方法 在 JSX 中使用表达式 可任意地在 JSX 当中使用 JavaScript 表达式,在 JSX 当中表达式要包含在大括号里...; } JSX 属性 使用引号来定义以字符串为值属性 const element = ; 使用大括号来定义以 JavaScript 表达式为值属性...const element = ; 切记你使用了大括号包裹 JavaScript 表达式时就不要再到外面套引号了 JSX 会将引号当中内容识别为字符串而不是表达式...条件语句 如果语句兼容于JSX,看上去像是JSX 限制所致,实际上却是因为JSX 只是普通JavaScript 回顾一下JSX 是如何被转换为普通JavaScript 如下JSX return...尽管并无可能在JSX 中使用“if”语句,但仍有根据条件渲染内容方法,包括使用三元表达式和将条件赋值给一个变量(空值和未定义值都会被React 进行处理,JSX在转义时什么都不会输出)。

2.3K30

React18JSX和Babel解析器

JSX 主要优点是它可以让我们在组件更加直观地表达 UI 结构,HTML声明式模版写法提高了JS可编程能力在运行时候 React 会将图中 JSX 代码转换为一个 React 元素对象.JSX..._jsx 是一个函数,它是 React JSX 内部实现,它接受两个参数:第一个参数是元素类型,第二个参数是元素属性对象元素类型是 span,属性对象包含一个 children 属性,它值是字符串...来识别 javaScript 里面的表达式.在 JSX ,我们可以使用大括号语法 {}来包含 JavaScript 表达式。...;前面我们第一点就提到了在 JSX 中使用 JavaScript 表达式时,我们需要将表达式包裹在大括号 {}如果我不把表达式包裹在大括号呢?...; // 错误示例最后本期结束咱们下次再见~ 关注我迷路,如果本篇文章对你有所帮助,或者你有什么疑问,欢迎在评论区留言,我一般看到都会回复。大家点赞支持一下哟~

18710
领券