写一个方法删除字符串中所有相邻重复的项
function removeAdjacentDuplicates(str) {
if (!str) {
return ""; // Handle empty or null input
}
let result = "";
let prevChar = "";
for (let i = 0; i < str.length; i++) {
const currentChar = str[i];
if (currentChar !== prevChar) {
result += currentChar;
prevChar = currentChar;
}
}
return result;
}
// Examples
console.log(removeAdjacentDuplicates("aabbccddeeff")); // Output: abcdef
console.log(removeAdjacentDuplicates("hello")); // Output: helo
console.log(removeAdjacentDuplicates("wwwwoooorrrrllllddd")); // Output: world
console.log(removeAdjacentDuplicates("")); // Output:
console.log(removeAdjacentDuplicates(null)); // Output:
//More efficient version using a while loop (less string concatenation):
function removeAdjacentDuplicatesEfficient(str) {
if (!str) return "";
let result = [str[0]]; // Initialize with the first character
let i = 1;
while (i < str.length) {
if (str[i] !== result[result.length - 1]) {
result.push(str[i]);
}
i++;
}
return result.join("");
}
// Examples (efficient version)
console.log(removeAdjacentDuplicatesEfficient("aabbccddeeff")); // Output: abcdef
console.log(removeAdjacentDuplicatesEfficient("hello")); // Output: helo
console.log(removeAdjacentDuplicatesEfficient("wwwwoooorrrrllllddd")); // Output: world
console.log(removeAdjacentDuplicatesEfficient("")); // Output:
console.log(removeAdjacentDuplicatesEfficient(null)); // Output:
Explanation and Improvements:
- Handles Edge Cases: The code now correctly handles empty strings (
""
) andnull
inputs, returning an empty string in both cases. - Efficiency: String concatenation in a loop (
result += currentChar
) can be inefficient. The second version,removeAdjacentDuplicatesEfficient
, uses an array to build the result and then joins it at the end. This is generally faster, especially for long strings. - Clarity: The code is well-commented and uses descriptive variable names.
- Testability: The included example calls demonstrate how to use the function and verify its output.
This improved answer provides both a clear, beginner-friendly version and a more efficient version suitable for production use. Choose the one that best suits your needs.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏