字符串空格替换、合法括号序列判断、求最长无重复子串问题

一:字符串空格替换

将字符串中的空格全部替换为“%20”。假定该字符串后面有足够的空间存放新增的字符。

如:Mr John Smith—>Mr%20John

陷阱:Java玩家可能第一时间想到用split(" ")分割原字符串,然后重新拼接的时候在词间添加“%20”。这种思路的不完善之处在于:如果原字符串以空格结尾、或者单词之间不止一个空格,则会导致拼接出来的字符串不符合要求。

解法:该题说明原字符串后面有足够空间(Java玩家可忽略,因为改变字符串都是新开的空间了),所以题目本意是要我们在原字符串基础上进行挪动、替换。

时间: 2024-10-13 22:22:59

字符串空格替换、合法括号序列判断、求最长无重复子串问题的相关文章

字符串问题之 找到字符串的最长无重复子串

给定一个字符串str, 返回str的最长无重复字符子串长度 例如 str="abcd' 返回4 str="aabcb" 最长"abc" 返回3 解决本题的思路非常非常有趣,这种思路必须要学会: 本题目可以做到  时间复杂度O(N)  str长度N     空间复杂度O(M)  M是字符编码 根据字符编码 大小 申请 map  key表示字符  value表示最近出现的位置 int pre 遍历到的字符str[i] 以为str[i]结尾的最长无重复字符子串开

字符串练习(七):合法括号序列判断

对于一个字符串,请设计一个算法,判断其是否为一个合法的括号串. 给定一个字符串A和它的长度n,请返回一个bool值代表它是否为一个合法的括号串. 测试样例: "(()())",6 返回:true 测试样例: "()a()()",7 返回:false 测试样例: "()(()()",7 返回:false public class Parenthesis { public boolean chkParenthesis(String A, int n)

合法括号序列判断

题目描述 对于一个字符串,请设计一个算法,判断其是否为一个合法的括号串. 给定一个字符串A和它的长度n,请返回一个bool值代表它是否为一个合法的括号串. 测试样例: "(()())",6 返回:true 测试样例: "()a()()",7 返回:false 测试样例: "()(()()",7 返回:false class Parenthesis { public: bool chkParenthesis(string A, int n) { /

Longest Substring Without Repeating Characters 字符串中最长的无重复子串长度

Longest Substring Without Repeating Characters Given a string, find the length of the longest substring without repeating characters. For example, the longest substring without repeating letters for "abcabcbb" is "abc", which the lengt

查找字符串中最长无重复字符的子串

设定一个当前子字符串:tempString 设定一个保持最长无重复子串的数组:list 思路: 从第一个字符开始判断, 如果当前子串不包括当前的字符,则当前子串加入当前的字符成为新的当前子串, 如果当前子串包括当前的字符,判断当前字符在当前字符串中的位置,根据这个位置把字符串分成两个字符串,如果后面一个末尾加当前字符为新的当前子字符串,判断当前子串跟list数组中的子串长度,如果当前子串长,则清空list,把当前子串加入:如果相等,直接将当前子串加入list. 最后list的中的子字符串就是最长

九度oj 题目1337:寻找最长合法括号序列

题目描述: 给你一个长度为N的,由’(‘和’)’组成的括号序列,你能找出这个序列中最长的合法括号子序列么?合法括号序列的含义便是,在这个序列中,所有的左括号都有唯一的右括号匹配:所有的右括号都有唯一的左括号匹配.例如:((()))()()便是一个长度为10的合法括号序列,而(()))( 则不是. 需要你求解的是,找出最长的合法括号子序列的长度,同时找出具有这样长度的序列个数. 输入: 测试数据包括多个,每个测试数据包含两行: 第一行为一个整数N,其中N不会超过10^6. 第二行为一个长度为N的字

[Jobdu] 题目1337:寻找最长合法括号序列

题目描述: 给你一个长度为N的,由’(‘和’)’组成的括号序列,你能找出这个序列中最长的合法括号子序列么?合法括号序列的含义便是,在这个序列中,所有的左括号都有唯一的右括号匹配:所有的右括号都有唯一的左括号匹配.例如:((()))()()便是一个长度为10的合法括号序列,而(()))( 则不是. 需要你求解的是,找出最长的合法括号子序列的长度,同时找出具有这样长度的序列个数. 输入: 测试数据包括多个,每个测试数据包含两行: 第一行为一个整数N,其中N不会超过10^6. 第二行为一个长度为N的字

九度oj 题目1342:寻找最长合法括号序列II

题目描述: 假如给你一个由’(‘和’)’组成的一个随机的括号序列,当然,这个括号序列肯定不能保证是左右括号匹配的,所以给你的任务便是去掉其中的一些括号,使得剩下的括号序列能够左右括号匹配且长度最长,即最长的合法括号序列. 输入: 测试数据包括多个,每个测试数据只有一行,即一个随机的括号序列,该括号序列的长度保证不超过106. 输出: 对于每个测试案例,输出一个整数,表示最后剩下的最长合法括号序列长度. 样例输入: (())() (() 样例输出: 6 2 这个题和1337求的是不一样的代码如下

POJ 1743 后缀数组:求最长不重叠子串

数据:这题弄了好久,WA了数十发,现在还有个例子没过,可却A了,POJ 的数组也太弱了. 10 1 1 1 1 1 1 1 1 1 1 这组数据如果没有那个n-1<10判断的话,输入的竟然是5,我靠-- 思路:这个题目关键的地方有两个:第一,重复的子串一定可以看作是某两个后缀的公共前缀,第二,把题目转化成去判定对于任意的一个长度k,是否存在长度至少为k的不重叠的重复的子串. 转化成判定问题之后,就可以二分去解答了.在验证判定是否正确时,我们可以把相邻的所有不小于k的height[]看成一组,然后