gpt4 book ai didi

java - 递归删除相邻的重复字符并返回结果字符串

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:27:26 25 4
gpt4 key购买 nike

给定一个字符串,完成给定的函数以递归地删除相邻的重复字符并返回结果字符串。如果结果字符串中没有剩余字符,则返回“-1”(不带引号)。

Sample Test Cases
Sample Input: ABCCBCBA
Output: ACBA

Explanation: (ABCCBCBA --> ABBCBA --> ACBA)
Sample Input: AA
Sample Output: -1
Explanation: Return -1, since there are no characters in the final string

我的解决方案在 -1 情况下失败

public String removeAdj( String src)
{
if(src == null)
return null;

if(src.length() ==1)
return src;



String result;

if(src.CharAt(0) == src.charAt(1) )
return removeAdj(src.SubString(1) );
else
result = src.CharAt(0) + removeAdj(src.SubString(1) );

return result;
}

最佳答案

我不会为此使用递归解决方案。

public String removeAdj(String src) {
int i = 0;
while (i < src.length() - 1) {
int j = i;
while (j < src.length() - 1 && src.charAt(i) == src.charAt(j + 1)) {
j++;
}
if (j > i) {
src = src.substring(0, i) + src.substring(j + 1, src.length());
i--;
} else {
i++;
}
}
if (i < 1) {
return "-1";
} else {
return src;
}
}

请注意,此解决方案会删除超过两个重复字符的子字符串,例如 AAA,但如果您不需要,它可以轻松简化。

关于java - 递归删除相邻的重复字符并返回结果字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22947588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com