1078. 字符串压缩与解压 (20)
2018-03-08 22:34
309 查看
题目链接:https://www.patest.cn/contests/pat-b-practise/1078
解题思路:主要考查字符串的处理,需要注意的地方是接收字符串和按照题目所给格式进行正确的排版输出。
解题思路:主要考查字符串的处理,需要注意的地方是接收字符串和按照题目所给格式进行正确的排版输出。
#include<cstdio> #include<cstring> const int maxn= 1010; void compress(char *str){ int len=strlen(str); for(int i=1;i<=len;i++){ int count=1; while(str[i]==str[i-1]){ count++; i++; } if(count==1&i!=1) //str[0]不输出,只是随便放的一个字符 printf("%c",str[i-1]); else if(i!=1){ printf("%d%c",count,str[i-1]); } } if(str[len-1]!=str[len]) printf("%c",str[len]); printf("\n"); } void decompress(char *str){ int len=strlen(str); for(int i=1;i<=len;i++){ int tmp=0; while(str[i]>='0'&&str[i]<='9'){ tmp=tmp*10+str[i]-'0'; i++; } for(int j=0;j<tmp-1;j++){ //此处,输出tmp-1次就够了,因为自身为非数字时会再输出一次 printf("%c",str[i]); } if(str[i]<'0'||str[i]>'9') printf("%c",str[i]); } printf("\n"); } int main(){ char c; char str[maxn]; scanf("%c",&c); getchar(); gets(str+1);//此处从str[1]开始接收,主要是为了压缩字符串的时候方便前后比较免得越界。 str[0]='*'; if(c=='C'){ compress(str); }else if(c=='D'){ decompress(str); } return 0; }
相关文章推荐
- 1078. 字符串压缩与解压 (20)
- 1078. 字符串压缩与解压 (20)
- 1078. 字符串压缩与解压 (20)
- 乙级 PAT 1078. 字符串压缩与解压 (20)
- 1078. 字符串压缩与解压 (20)
- 1078. 字符串压缩与解压 (20)
- 1078. 字符串压缩与解压 (20)-PAT乙级真题
- 1078. 字符串压缩与解压 (20) PAT乙级真题
- 1078. 字符串压缩与解压 (20)
- 1078. 字符串压缩与解压 (20)
- 1078. 字符串压缩与解压 (20)
- 1078. 字符串压缩与解压 (20)
- 1078. 字符串压缩与解压 (20)
- PAT乙级1078. 字符串压缩与解压 (20)
- 1078. 字符串压缩与解压 (20)
- PAT乙级1078. 字符串压缩与解压 (20)
- 1078. 字符串压缩与解压 (20)(C++)
- PAT (Basic Level) Practise (中文) 1078. 字符串压缩与解压 (20)
- 1078. 字符串压缩与解压 (20)
- PAT 乙级 1078. 字符串压缩与解压 (20)