用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - c++代码库

hdoj1020简单的字符串处理

2013-02-18 作者: shiqiang举报

[c++]代码库

#include<iostream>
#include<string>
using namespace std;

int main(){
	string s1;
	char ch[10005];
	int m;
	int count1 = 1;
	int count2 = 0;
	cin>>m;
	for(int i = 0; i < m; i++){//依次处理每一行		
		count2 = 0;
		cin>>s1;
		if(s1.length() == 1){
			cout<<s1<<endl;
			continue;
		}
		for(int j = 1; j < s1.length(); j++){//依次处理每个字符		
			if(s1[j] == s1[j - 1]){
				count1++;
			}else {
				if(count1 > 1){
					count2++;
					//ch[count2 - 1] = (char)(count1 + 48);
					char temp[10];
					sprintf(temp, "%d", count1);//count1的值可能大于个位数
					for(int k = 0; temp[k] != '\0'; k++, count2++){
						ch[count2 - 1] = temp[k];
					}
					count2--;
				}			
				count2++;
				ch[count2 - 1] = s1[j - 1];
				count1 = 1;
			}
		}
		if(count1 != 1){
			count2++;
			//ch[count2 - 1] = (char)(count1 + 48);
			char temp[10];
			sprintf(temp, "%d", count1);
			for(int k = 0; temp[k] != '\0'; k++, count2++){
				ch[count2 - 1] = temp[k];
			}
			count2--;//很多的count2++与count2--只是为了保持逻辑的直接性
			count2++;
			ch[count2 - 1] = s1[s1.length() - 1];
			count1 = 1;
		}else{
			count2++;
			ch[count2 -1] = s1[s1.length() - 1];
		}
		ch[count2] = '\0';
		cout<<ch<<endl;
	}
}


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...