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.
标签:removeAdjacentDuplicatesEfficient,console,log,删除,相邻,result,str,字符串,Output From: https://www.cnblogs.com/ai888/p/18581093