两种情况分开处理,可以通过全部case,不能递归,用递归开销太大,用递归就输了 #include<iostream> #include<string> #include<vector> using namespace std; int main() {     int n = 0;     cin >> n;     string strIn;     string strTmp;     string strOut;     vector<string> vStr, vRes;     while (n--)     {         cin >> strIn;         vStr.push_back(strIn);     }     for (int i = 0; i < vStr.size(); i++)     {         strTmp = vStr[i];         int k = 0;         while (k < strTmp.length())         {             ////////////////////////////////             string str3;             str3 += strTmp[k];             str3 += strTmp[k];             str3 += strTmp[k];             int nIdx = strTmp.find(str3);             if (-1 == nIdx)             {                 k += 1;                 continue;             }             else             {                 strOut += strTmp.substr(0, nIdx);                 strOut += strTmp[k];                 strOut += strTmp[k];                 strOut += strTmp.substr(nIdx + 3, strTmp.length());                 strTmp = strOut;                 strOut.clear();             }             //////////////////////////         }         int h = 0;         strOut.clear();         while (h < strTmp.length())         {             if (h + 3 < strTmp.length())             {                 string str2;                 if ((strTmp[h] == strTmp[h + 1]) && (strTmp[h + 2] == strTmp[h + 3]))                 {                     str2 += strTmp[h];                     str2 += strTmp[h + 1];                     str2 += strTmp[h + 2];                     str2 += strTmp[h + 3];                     int nIdx = strTmp.find(str2);                     strOut += strTmp.substr(0, nIdx);                     strOut += strTmp[h];                     strOut += strTmp[h + 1];                     strOut += strTmp[h + 2];                     strOut += strTmp.substr(nIdx + 4, strTmp.length());                     strTmp = strOut;                     strOut.clear();                 }             }             h += 1;         }         vRes.push_back(strTmp);     }     for (int i = 0; i < vRes.size(); i++)     {         cout << vRes[i] << endl;     }     system("pause");     return 0; }
点赞 1

相关推荐

牛客网
牛客企业服务