首页 > ACM题库 > HDU-杭电 > HDU 1736 美观化文字-字符串-[解题报告] C++
2013
12-21

HDU 1736 美观化文字-字符串-[解题报告] C++

美观化文字

问题描述 :

请看下面两段文字:

Kenny喊道:"我来了!"

Kenny喊道:“我来了!”

前面一段文字中由于在中文中使用了英文标点,显得不太美观。本题中你的任务是让任意一段文字美观化。美观化具体要求为将以下字符(串)转换为对应的中文字符:


英文 中文
, ,
. 。
! !
" “或”
<< 《
>> 》
? ?

输入:

输入文字只有一段。文字中可能含有中英文、符号以及控制符(换行、空格、制表符等)。

输出:

按照要求输出美化后的文字段。你不用翻译以上指定的符号之外的所有字符

样例输入:

Kenny喊道:"我来了!"

样例输出:

Kenny喊道:“我来了!”

Hint
你可以认为所有中文字符由两个字节组成,首字节的ASCII值都大于127(也可以理解为signed char型小于0)

题目地址:  http://acm.hdu.edu.cn/showproblem.php?pid=1736

一道很水的模拟题目。

代码如下:(有注释)

#include<iostream>
#include<vector>
#include<list>
#include<deque>
#include<queue>
#include<stack>
#include<map>
#include<set>
#include<algorithm>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#include<cmath>
using namespace std;

typedef long long LL;
const int N=201000;

char s[N];

int main()
{
    int i,j,T,t,n,m,a,b,sum;
    while(gets(s)!=NULL)
    {
        int len=strlen(s);
        sum=0;
        for(i=0;i<len;i++)
        {
            string temp="";
            temp=temp+s[i]+s[i+1];//这个地方不知道为什么不能写成temp+=s[i]+s[i+1];
            if(temp=="“"||temp=="”")//这个地方一定要注意,中文的引号不是一个字符
            {
                sum++;
            }
            //其他地方就没什么注意的呢,直接模拟
            if(s[i]=='"')
            {
                if(sum%2==0)
                    printf("“");
                else
                    printf("”");
                sum++;

            }
            else if(s[i]==',')
                printf(",");
            else if(s[i]=='.')
                printf("。");
            else if(s[i]=='!')
                printf("!");
            else if(s[i]=='?')
                printf("?");
            else if(s[i]=='<'&&s[i+1]=='<')
            {
                i++;
                printf("《");
            }
            else if(s[i]=='>'&&s[i+1]=='>')
            {
                i++;
                printf("》");
            }
            else
                printf("%c",s[i]);
        }
        printf("\n");
    }
    return 0;
}

解题报告转自:http://blog.csdn.net/xh_reventon/article/details/8889973