首页 > 解决方案 > 递归地仅返回字符串中的特定字符 C++

问题描述

我目前正在学习 C++,但在递归时遇到了麻烦。手头的问题是遍历一个字符串并只返回其中的运算符:即'(' 或'[' 或'{' 或')' 或'}' 或']'。不幸的是,我的程序一直返回空字符串。任何帮助,将不胜感激。

#include <string>

string operatorsOnly(string s) {
  if (s.length() == 0) {
    return "";
  }
  if (s[0] != '(' or '[' or '{' or ')' or '}' or ']') {
    return operatorsOnly(s.substr(1, s.length() - 1));
  }
  else {
    return s[0] + operatorsOnly(s.substr(1, s.length() - 1));
  } 
}

标签: c++stringrecursion

解决方案


您无法使用该语法将变量与多个值进行比较。你需要做:

if (s[0] != '(' or s[0] != '[' or s[0] != '{' or s[0] != ')' or s[0] != '}' or s[0] != ']') {
  // ...

推荐阅读