字符串问题---替换字符串中连续出现的指定字符串
2017-08-18 21:44
141 查看
【题目】
给定三个字符串str,from和to,已知from字符串中没有重复字符,把str中所有from的子串全部替换成to字符串,对连续出现from的部分要求只替换一个to字符串,返回最终的结果字符串。
【举例】
str = “123abc”,from = “abc”,to = “4567”,返回“1234567”。
str = “123”,from = “abc”,to = “4567”,返回“123”。
str = “123abcabc”,from = “abc”,to = “X”,返回“123X”。
【基本思路】
使用变量match表示目前匹配到from的什么位置。从左到右遍历str。
如果str[i] == from[match],并且match是from的最后一个字符的位置,说明在str中发现了from的子串,将该子串字符的位置全部设置为空字符。同时将match归0,继续遍历数组。如果match不是from的最后位置,match + 1。
如果str[i] != from[match],将match归0,同时,还需要注意此时str[i]是否等于from[0],如果等于的话,说明str[i]可能作为下一处子串的开头,令match + 1。
接下来只需要把空字符的位置替换成to即可,连续的空字符只替换一次。
下面是使用python3.5实现的代码
给定三个字符串str,from和to,已知from字符串中没有重复字符,把str中所有from的子串全部替换成to字符串,对连续出现from的部分要求只替换一个to字符串,返回最终的结果字符串。
【举例】
str = “123abc”,from = “abc”,to = “4567”,返回“1234567”。
str = “123”,from = “abc”,to = “4567”,返回“123”。
str = “123abcabc”,from = “abc”,to = “X”,返回“123X”。
【基本思路】
使用变量match表示目前匹配到from的什么位置。从左到右遍历str。
如果str[i] == from[match],并且match是from的最后一个字符的位置,说明在str中发现了from的子串,将该子串字符的位置全部设置为空字符。同时将match归0,继续遍历数组。如果match不是from的最后位置,match + 1。
如果str[i] != from[match],将match归0,同时,还需要注意此时str[i]是否等于from[0],如果等于的话,说明str[i]可能作为下一处子串的开头,令match + 1。
接下来只需要把空字符的位置替换成to即可,连续的空字符只替换一次。
下面是使用python3.5实现的代码
#替换字符串中连续出现的指定字符串 def replace(str1, fro, to): if str1 == None or fro == None or to == None or str1 == '' or fro == '': return str1 chas = list(str1) match = 0 for i in range(len(str1)): if chas[i] == fro[match]: match += 1 if match == len(fro): index = i while match > 0: chas[index] = '' index -= 1 match -= 1 else: match = 0 if chas[i] == fro[0]: #如果相等,从当前字符重新匹配 match += 1 cur = '' res = '' for i in range(len(str1)): if chas[i] != '': cur = cur + chas[i] else: if i == 0 or chas[i-1] != '': res = res + cur + to cur = '' if cur != '': res += cur return res
相关文章推荐
- 替换字符串中连续出现的指定字符串
- 替换字符串中连续出现的指定字符串
- 字符串——替换字符串中连续出现的指定字符串
- 5.6 替换字符串中连续出现的指定字符串
- 字符串之替换字符串中连续出现的指定字符串
- 替换字符串中连续出现的指定字符串
- 替换字符串中连续出现的指定字符串
- 替换字符串中连续出现的指定字符串
- 字符串之替换字符串中连续出现的指定字符串
- 字符串编程问题:求连续出现最长字符串问题(js实现)
- 给定一个字符串,请你将字符串重新编码,将连续的字符替换成“连续出现的个数+字符”。比如字符串AAAABCCDAA会被编码成4A1B2C1D2A。
- 解决replaceAll替换字符串中包括特殊符号时出现的问题
- 给定一个字符串,请你将字符串重新编码,将连续的字符替换成“连续出现的个数+字符”。比如字符串AAAABCCDAA会被编码成4A1B2C1D2A。
- 字符串问题---去掉字符串中连续出现k个0的子串
- string类学习字符串中的子串出现次数与替换的问题
- 将字符串中连续出现两次的单词,替换为一个单词
- 算法:字符串编码 (将连续的字符替换成“连续出现的个数+字符”)
- 【字符串问题】求一个字符串中连续出现次数最多的子串
- 重复子串问题(二):求一个字符串中连续出现次数最多的子字符串
- java判断字符串中某字符出现的位置,并替换指定指定内容