用户注册



邮箱:

密码:

用户登录


邮箱:

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

发表随想


还能输入: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、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

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

加载中,请稍后...