HDU 1020 字符串编码

深入理解 JVM 原理
深入理解 JVM 原理
wangxiaoming

Encoding

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 23290    Accepted Submission(s): 10200


Problem Description
Given a string containing only 'A' - 'Z', we could encode it using the following method: 

1. Each sub-string containing k same characters should be encoded to "kX" where "X" is the only character in this sub-string.

2. If the length of the sub-string is 1, '1' should be ignored.
 

Input
The first line contains an integer N (1 <= N <= 100) which indicates the number of test cases. The next N lines contain N strings. Each string consists of only 'A' - 'Z' and the length is less than 10000.
 

Output
For each test case, output the encoded string in a line.
 

Sample Input
2 ABC ABBCCC
 

Sample Output
ABC A2B3C
 

题意 : 
         进行译码操作 如果是 相同字符的个数为1 忽略1 其他为 1 加字符
解题方法:
           前后比较两个字符是否相同, 相同计数,不相同那么就打印出来,并且进行下一组计数, 思路方法在代码里有
源代码:
#include<iostream>
#include<cstring>
using namespace std;

#define max 10004
int main()
{//首先解这道题的思路是什么,这个很关键
//思路是什么呢,每个字符前后比较招到相同字符的个数 记录下来
    int t;
    cin>>t;
    int i;
    while(t--)
    {//比较前后自负是否有变换不要用单纯的s[i]和s[i+1] 比较 可以灵活一点 用temp取代s[0] 然后下面每次变换下就行
       char s[max+1];
       cin>>s;
       int count = 1;
       char tmp = s[0];
       for(i = 1; i < strlen(s)+1;i++)
       {//for中有if一定是先判断一下然后继续的
           if(tmp == s[i])
           {
               count++;
           }
           else
           {
               if(count != 1)
               cout<<count;
               cout<<tmp;//可以进行打印,为什么在循环中打印,只要上面计完数了才可以打印
               tmp = s[i];
               count = 1;
           }

       }
       cout<<endl;
    }
    return 0;
}


wangxiaoming CSDN认证博客专家 架构 Spring Boot Redis
博客是很好的总结和记录工具,如果有问题,来不及回复,关注微信公众号:程序员开发者社区,获取我的联系方式,向我提问,也可以给我发送邮件,联系 1275801617@qq.com
©️2020 CSDN 皮肤主题: Age of Ai 设计师: meimeiellie 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值