1544.整理字符串
来看题目描述
我看到本题的第一想法是双指针法,但是我所构想的逻辑无法达到目的,具体来说我采用前后指针,依次前进,然后满足条件就跳过,这样就导致会忽略许多满足的结构,就让我十分头疼,调试了半天还是不行,甚至想要使用三指针,四指针…服啦!结果表明都是不行的。下面来一起看看正确解法吧
思路一(模拟栈速解版)
这个和括号匹配问题很像,把字符串依次入栈,然后满足条件的就一起消除,主要就用到栈的压栈操作和取栈顶操作。这样一 一匹配就能达到要求。来看图解:
按照栈的方法很快速的就解决了问题,所以选择真的大于努力,这个问题选择栈就能快速解决,要是使用多指针就深陷泥潭了,来看代码实现:
char* makeGood(char* s) {
if (*s == '\0') return s;
if (*(s + 1) == '\0') return s;
int top = 0;
// 使用栈的思想
char* ret = (char*)malloc(sizeof(char) * 100);
char* cur = s;
ret