给定一个字符串,完成给定的函数以递归方式删除相邻的重复字符并返回结果字符串。如果结果字符串中没有剩余字符,则返回" -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;
}
答案 0 :(得分:1)
我不会为此使用递归解决方案。
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,但如果您不需要,则可以轻松简化。
答案 1 :(得分:0)
我不确定是什么问题。如果String的长度为1个字符,则返回-1,而不是src。
这是你的解决方案吗?