• HDU1020 Encoding


     1 //2016-07-13
     2 
     3 #include "iostream"
     4 #include "cstdio"
     5 #include "vector"
     6 #include "string"
     7 using namespace std;
     8 int main()
     9 {
    10 int t;
    11 scanf("%d",&t);
    12 string a;
    13 while(t--){
    14 cin>>a;
    15 int len=a.length();
    16 int count01=1;
    17 vector<char> v;
    18 int i;
    19 for( i=1;i<len;i++){
    20 if(a.at(i)==a.at(i-1)){//此位置字母与前一个是否相同
    21 count01++;
    22 continue;//相同计数器加1
    23 }else{//不相同判断计数器是否为1(因为计数器为一时不插入字符串)
    24 if(count01!=1){//计数器可能非常大,接近10000,存入一字符数组,在倒序插入字符串
    25 char str[10000];
    26 int j=0;
    27 while(count01!=0){
    28 str[j]=count01%10+48;
    29 j++;
    30 count01/=10;
    31 }
    32 for(int k=j-1;k>=0;k--){
    33 v.push_back(str[k]);
    34 }
    35 v.push_back(a.at(i-1));//插入前一字符
    36 count01=1;
    37 }
    38 else{
    39 v.push_back(a.at(i-1));//计数器为一,直接插入前一字符
    40 }
    41 
    42 }
    43 
    44 }
    45 if(count01!=1){//
    46 char str[10000];
    47 int j=0;
    48 while(count01!=0){
    49 str[j]=count01%10+48;
    50 j++;
    51 count01/=10;
    52 }
    53 for(int k=j-1;k>=0;k--){
    54 v.push_back(str[k]);
    55 }
    56 }
    57 v.push_back(a.at(i-1));//因为总是拿此位置与前一个位置的字符比较,而输出前一个字符,
    58 //输入字符串没有后一个字符串与其相比而输出最后一个字符,所以对最后一个字符单独处理
    59 
    60 vector<char>::iterator it;//迭代器遍历输出
    61 for(it=v.begin();it!=v.end();it++){
    62 printf("%c",*it);
    63 }
    64 printf("
    ");
    65 }
    66 }
  • 相关阅读:
    Vue+Koa2移动电商实战 (一)前端环境搭建
    Hibernate之二级缓存
    Hibernate之QBC检索和本地SQL检索
    Hibernate之HQL介绍
    Hibernate 检索策略
    Hibernate4.x之映射关系--继承映射
    Hibernate4.x之映射关系--多对多
    Hibernate4.x之映射关系--一对一映射
    Hibernate4.x之映射关系--双向1-n
    Hibernate4.x之映射关系--单向一对多
  • 原文地址:https://www.cnblogs.com/kimsimple/p/5666836.html
Copyright © 2020-2023  润新知