//2019年4月10日华为笔试第二题
//把括号内的字符串重复n遍,n为括号前的数字,然后逆序输出
//示例:
//输入:
//ab3(ab)
//输出:
//babababa
//解题思路:递归
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
char* UnfoldStr(char *strIn, string &strOut);
int main()
{
char strIn[1000] = { '\0' };
string strOut;
while (cin >> strIn)
{
UnfoldStr(strIn, strOut);
for (int i = strOut.size() - 1; i >= 0; --i)
cout << strOut[i];
cout << endl;
strOut.clear();
}
return 0;
}
char* UnfoldStr(char *strIn, string &strOut)
{
char *ptr = nullptr;
while (*strIn)
{
int m = 0;
while (isdigit(*strIn))
{
m = 10 * m + (*strIn - '0'); //有可能是两位数及以上
++strIn;
}
if (m == 0) ++m;
if (*strIn
把括号内的字符串重复n遍,n为括号前的数字,然后逆序输出
最新推荐文章于 2022-10-20 16:21:47 发布