当前位置:编程学习 > C/C++ >>

(字符串的模式模式匹配4.7.9)POJ 1782 Run Length Encoding(具有重复字符的字符串的处理方式)

/* 
 * POJ_1782.cpp 
 * 
 *  Created on: 2013年10月28日 
 *      Author: Administrator 
 */  
  
#include <iostream>  
#include <cstdio>  
#include <cstring>  
  
using namespace std;  
  
const int maxn = 1120;  
int main(){  
    char s[maxn];  
    char tmp[maxn];  
    while(gets(s)){//这里不要使用scanf("%s",&s)否则会出错  
  
        int len = strlen(s);  
        int i;  
        for(i = 0 ; i < len ; ++i){  
            if(i + 1 < len && s[i] == s[i+1]){//输出有重复字符的子串  
                int j = 0;  
                tmp[j] = s[i];  
                j++;  
                i++;  
  
                while(j < 9 && i < len && s[i] == s[i-1]){  
                    tmp[j] = s[i];  
                    j++;  
                    i++;  
                }  
                printf("%d%c",j,tmp[0]);  
                --i;  
            }else{//输出没有重复字符的子串  
                printf("1");  
  
                while(i < len){  
                    if(i + 1 < len &&s[i] == s[i+1]){  
                        break;  
                    }  
                    printf("%c",s[i]);  
                    if(s[i] == '1'){//如果是1,就将他们变成11  
                        printf("%c",s[i]);  
                    }  
                    i++;  
                }  
                --i;  
                printf("1");  
            }  
        }  
        printf("\n");  
    }  
  
    return 0;  
}  
 
补充:软件开发 , C++ ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,