杭电OJ1020 Encoding

借用了插入排序的思想,遍历整个字符串,用一个p来计字母连续出现的次数,一遇到相邻两个字符不同的情况,便输出个数和字母,直到整个字符串遍历完成。为了简化代码,在字符串最后添加了一个非字母字符,会使得最后一个字母总是和下一个字符不想等而进入else。
#include<iostream>
#include<cstring> 
using namespace std;
int main(){
	static char a[10001];
	int p;
	int t;
	cin >> t;
	cin.ignore(1, '\0');  //消除回车键对下一次输入的影响
	while (t--){
		
		p = 1;         //p作为"游标"和计数器
		cin.getline(a, 10000);
		a[strlen(a)] = ' ';     //添加一个非字母的字符
		for (int n = 0; n < strlen(a)-1; n++){
				if (a[n] == a[n + 1])
				p++;
				
				else{
					if (p != 1){
						cout << p << a[n]; 
						p=1;
					}
					else {
						cout << a[n];
						p = 1;
					}
				}
		}
		cout<<endl;
	}
}
http://acm.hdu.edu.cn/showproblem.php?pid=1020
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值