如何在字符串相邻不同字符间插入指定符号?
嘿,这个需求挺简单的,我给你几个实用的实现方案,涵盖不同编程语言和思路,你按需选用:
Python 实现
用Python的话,我们可以用列表来高效拼接结果(毕竟字符串是不可变的,列表拼接更省性能),逻辑非常直观:
s = "aabbc" if not s: # 处理空字符串的边界情况 print("") else: result = [s[0]] # 先把第一个字符放进结果列表 for char in s[1:]: # 对比当前字符和结果里最后一个有效字符(排除刚插入的$) if char != result[-1][-1]: result.append("$") result.append(char) final_str = ''.join(result) print(final_str) # 输出: aa$bb$c
简单说下逻辑:先初始化结果列表,把第一个字符放进去。然后从第二个字符开始遍历,每次和结果列表最后一个元素的最后一个字符对比(因为可能刚插入了$,所以要取真正的前一个原字符),如果不一样就先加$,再加当前字符,最后把列表拼成字符串就行。
JavaScript 实现
如果是前端或Node.js场景,JavaScript有两种常用方式:
遍历拼接法
和Python思路一致,用数组来构建结果:
const s = "aabbc"; if (s.length === 0) { console.log(""); } else { const result = [s[0]]; for (let i = 1; i < s.length; i++) { if (s[i] !== result[result.length - 1]) { result.push("$"); } result.push(s[i]); } const finalStr = result.join(""); console.log(finalStr); // 输出: aa$bb$c }
正则表达式法
如果想更简洁,可以用正则快速匹配不同字符的边界,直接替换插入$:
const s = "aabbc"; const finalStr = s.replace(/(?<=.)(?!\1)/g, "$"); console.log(finalStr); // 输出: aa$bb$c
这里的正则/(?<=.)(?!\1)/g可以拆解下:
(?<=.):正向肯定预查,确保当前位置前面有字符(避免在字符串开头插入)(?!\1):负向预查,确保当前字符和前面捕获的字符(\1)不一样- 把所有匹配到的位置替换成
$,就刚好在不同字符之间插入了分隔符
通用核心思路
不管用哪种语言,核心逻辑都是这几点:
- 先处理空字符串这类边界情况(如果输入可能为空的话)
- 从第二个字符开始,逐个和前一个原字符对比
- 当当前字符和前一个不同时,在两者之间插入
$ - 最后拼接所有部分得到最终字符串
内容的提问来源于stack exchange,提问作者Stiiq
相关产品推荐
相关产品推荐

