ZOJ 2478 Encoding

来源:互联网 发布:软件著作权代办加急 编辑:程序博客网 时间:2024/06/05 09:25

题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1478

注意:本题的考察重点是对连续重复字符的处理,这种处理是字符串处理中常考的技巧。

            重点是设置一个作用类似于哨兵的string t; 然后把当前的重复的字母放到 t[0] 中,然后依次比较。

            还要注意的是最后一个字符与倒数每二个字符不同的情形。注意思维的严密性。

#include<iostream>#include<fstream>#include<vector>#include<string>#include<iterator>#include<algorithm>using namespace std;int main(){    #ifdef ONLINE_JUDGE    #else        freopen("D:\\in.txt", "r", stdin);        freopen("D:\\out.txt", "w", stdout);    #endif // ONLINE_JUDEG    int n;    cin >> n;    string str;    string t;//重要步骤    int temp(0);//重要    for (int i = 0; i < n; i++)    {        temp = 0;        cin >> str;        t = str[0];        for (int j = 0; j < str.length(); j++)        {            if (str[j] == t[0])            {                temp++;                if (str.length() - 1 == j)//如果已是最后一个,直接输出                {                    if (1 == temp)                    {                        cout << t[0];                    }                    else                    {                        cout << temp << t[0];                    }                }            }            else            {                if (1 == temp)                {                    cout << t[0];                }                else                {                    cout << temp << t[0];                }                t[0] = str[j];                temp = 1;                if (j == str.length() - 1)//如果已是最后一个,直接输出                {                    cout << t[0];                }            }        }        cout << endl;    }    return 0;}
0 0