原题链接:. - 力扣(LeetCode)
这道题乍一看是一个模拟题,实际上是一个栈问题,类似于. - 力扣(LeetCode)括号问题,具体思路为:
1.将字符串依次入栈,当栈顶两个元素为'CD'或'AB'时(这里是栈顶为D或B),出栈
2.遍历完后统计栈剩余元素个数
代码:
int minLength(char *s){
int len = strlen(s), j = 0;
char *stack = (char *)malloc(sizeof(char) * len);
for (int i = 0; i < len; i++) {
stack[j++] = s[i];
if (j >= 2 && (
stack[j - 2] == 'A' && stack[j - 1] == 'B' || stack[j - 2] == 'C' && stack[j - 1] == 'D'//栈顶和次栈顶元素
)) {
j -= 2;
}
}
free(stack);
return j;
}