The Seven Percent Solution

The Seven Percent Solution

时间: 1ms        内存:64M

描述:

Uniform Resource Identifiers (or URIs) are strings like http://icpc.baylor.edu/icpc/, mailto:foo@bar.org, ftp://127.0.0.1/pub/linux, or even just readme.txt that are used to identify a resource, usually on the Internet or a local computer. Certain characters are reserved within URIs, and if a reserved character is part of an identifier then it must be percent-encoded by replacing it with a percent sign followed by two hexadecimal digits representing the ASCII code of the character. A table of seven reserved characters and their encodings is shown below. Your job is to write a program that can percent-encode a string of characters.

Character Encoding
" " (space) %20
"!" (exclamation point) %21
"$" (dollar sign) %24
"%" (percent sign) %25
"(" (left parenthesis) %28
")" (right parenthesis) %29
"*" (asterisk) %2a

输入:

The input consists of one or more strings, each 1–79 characters long and on a line by itself, followed by a line containing only "#" that signals the end of the input. The character "#" is used only as an end-of-input marker and will not appear anywhere else in the input. A string may contain spaces, but not at the beginning or end of the string, and there will never be two or more consecutive spaces.

输出:

For each input string, replace every occurrence of a reserved character in the table above by its percent-encoding, exactly as shown, and output the resulting string on a line by itself. Note that the percent-encoding for an asterisk is %2a (with a lowercase "a") rather than %2A (with an uppercase "A").

示例输入:

Happy Joy Joy!
http://icpc.baylor.edu/icpc/
plain_vanilla
(**)
?
the 7% solution
#

示例输出:

Happy%20Joy%20Joy%21
http://icpc.baylor.edu/icpc/
plain_vanilla
%28%2a%2a%29
?
the%207%25%20solution

提示:

参考答案(内存最优[752]):

#include<stdio.h>
#include<string.h>
char s[1000];

int main()
{
    int i,len;
    while(gets(s))
    {
        len=strlen(s);
        if(s[0]=='#')
            break;
        for(i=0;i<len;i++)
        {
            if(s[i]==' ')
                printf("%%20");
            else if(s[i]=='!')
                printf("%%21");
            else if(s[i]=='$')
                printf("%%24");
            else if(s[i]=='%')
                printf("%%25");
            else if(s[i]=='(')
                printf("%%28");
            else if(s[i]==')')
                printf("%%29");
            else if(s[i]=='*')
                printf("%%2a");
            else
                printf("%c",s[i]);
        }
        printf("\n");
    }
    return 0;
}

参考答案(时间最优[0]):

#include<stdio.h>
#include<string.h>
char s[1000];

int main()
{
    int i,len;
    while(gets(s))
    {
        len=strlen(s);
        if(s[0]=='#')
            break;
        for(i=0;i<len;i++)
        {
            if(s[i]==' ')
                printf("%%20");
            else if(s[i]=='!')
                printf("%%21");
            else if(s[i]=='$')
                printf("%%24");
            else if(s[i]=='%')
                printf("%%25");
            else if(s[i]=='(')
                printf("%%28");
            else if(s[i]==')')
                printf("%%29");
            else if(s[i]=='*')
                printf("%%2a");
            else
                printf("%c",s[i]);
        }
        printf("\n");
    }
    return 0;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注