>  Q&A  >  본문

C++最简单的字符串解码问题

例如输入a3,解码后就是aaa;输入goo12le就是gooooooooooooole;输入XXX为结束。鄙人新手,点都不会.....麻烦来点简单的...初学者,不会高深的语法。最好是循环解决的....

高洛峰高洛峰2925일 전537

모든 응답(1)나는 대답할 것이다

  • 三叔

    三叔2016-11-07 14:41:36

        auto decode = [](string origin)
        {
            vectortarget;
            for (int pos, i = 0; i < origin.length(); )
            {
                if (origin[i] >= 'a'&&origin[i] <= 'z')
                {
                    target.push_back(origin[i]);
                    pos = i++;
                }
                else if (origin[i] >= '0'&&origin[i] <= '9')
                {
                    int count = 0;
                    while (origin[i] >= '0'&&origin[i] <= '9')
                    {
                        count *= 10;
                        count+=origin[i++] - '0';
                    }
                    do { target.push_back(origin[pos]); } while (--count);
                }
                //if have other char
                else i++;
            }
            // last : vector -> string
            char *buffer = new char[target.size()+1];
            for (int i = 0; i < target.size(); i++)
                buffer[i] = target[i];
            buffer[target.size()] = '\0';
            auto result = string(buffer);
            delete[] buffer;
            return result;
        };

    记录1个pos就行了。

    회신하다
    0
  • 취소회신하다