解题思路
此题可以采用 字符数组模拟栈实现。
将需要整理的s的字符依次入栈,当栈中字符>=2时,检查栈顶两个元素是否互为大小写。
如果互为大小写,弹出栈顶两个元素。
char * makeGood(char * s){
// 数组模拟栈
int len = strlen(s);
char* stack = (char*)malloc(len+1);
int top = 0; // 指向栈顶
for(int i = 0; i < len; ++i)
{
stack[top++] = s[i];
if(top >= 2 && (stack[top-2] + 32 == stack[top-1] || stack[top-2] - 32 == stack[top-1]))
{
top -= 2; //删除栈顶两个元素
}
}
stack[top] = '\0';
return stack;
}