永发信息网

去除多余括号的算法

答案:1  悬赏:10  手机版
解决时间 2021-10-22 07:14
  • 提问者网友:精神病院里
  • 2021-10-22 02:47
去除多余括号的算法
最佳答案
  • 五星知识达人网友:低音帝王
  • 2021-10-22 04:05
c++的, 不检查括号匹配,只处理小括号 不能含有 空格 : ; void RemoveRedundancyBrackets(char* szSrc) { if (NULL == szSrc) return; int len = strlen(szSrc) - 1; int i; int j; for (i = 1; i < len; i++) { if (')' == szSrc[i]) { for (j = i - 1; j > 0; j--) { if ('(' == szSrc[j]) { if (')' == szSrc[i + 1] && '(' == szSrc[j - 1]) { szSrc[i] = ' '; szSrc[j] = ' '; } else { szSrc[i] = ':'; szSrc[j] = ';'; } break; } } } } if (')' == szSrc[len]) { j = 1; for (i = len - 1; i >= 0; i--) { if ('(' == szSrc[i]) { j = i; break; } } if (j == 0) { szSrc[0] = ' '; szSrc[len] = '\0'; } } char *buffer = new char[len + 2]; strcpy(buffer, szSrc); i = 0; j = 0; while('\0' != buffer[i]) { if (':' == buffer[i]) { szSrc[j++] = ')'; } else if (';' == buffer[i]) { szSrc[j++] = '('; } else if (' ' != buffer[i]) { szSrc[j++] = buffer[i]; } i++; } szSrc[j] = '\0'; delete[] buffer; }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯