• 王宁宁宁


    链接:https://ac.nowcoder.com/acm/contest/2763/E
    来源:牛客网

    题目描述

    暑假训练已经结束了,暑假训练时间充不充足,训练强度大不大,训练提升大不大;

    训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大;

    训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大;

    训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大;

    训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,我相信大家自己心里都是有数的,说到底我们提升的动力还是来自于自己的毅力。希望大家能够在新的学期能够再接再厉,成绩不理想不要紧,坚持下去总有一天会出头,得到你想要的东西的!与君共勉。

    —— 王宁宁宁 发表于 08-25 19:32, 来自群 2018CUST ACM

    以上摘自王宁宁宁发在18级校队群的群公告,如你所见,王宁宁宁是个很啰嗦的人。为了他的毕业证,你需要将他的话缩写后传达下去。

    现在,王宁宁宁将发表一段洋洋洒洒的言论。为了减轻你的工作负担,他这次只说英文(^v^考虑到如果有中文字符,C/C++选手可能会疯)。

    同时,为了不引起歧义,你的缩写规则很简单:对于一段连续出现n次的字母X,你可以用nX替换,例如aaaa可以用4a替换。请你用最少的替换次数,使得缩写后的字符串长度最短。

    输入描述:

    有多组输入。

    每组输入一行,代表原始字符串(王宁宁宁的言论),仅由英文字母组成,长度不超过100000。

    输出描述:

    对于每组输入,输出一行,代表符合题意的缩写后的字符串。
    示例1

    输入

    复制
    wnnn
    hahahaaaaaaaaaa

    输出

    复制
    w3n
    hahah10a

    备注:

    用最少的替换次数,使得缩写后的字符串长度最短。即在字符串最短的条件下,要求替换次数最少。


    题解:这道题不难,但是有一个卡点,要注意:它说的是用最少的替换次数,使得字符串最短。也就是说字符串同样最短的情况下,要用最少的替换次数。
    所以!连续出现2次的的字母就不用替换了,因为替换后长度还是一样的,还是2。(注意注意不要被卡在这里了,看清题意)
    #include <bits/stdc++.h>
     
    using namespace std;
     
    int main(){
        string s;
        while(cin >> s){
            int len=s.size();
            int count=1;
            for(int i=0;i<len;i++){
                if(s[i]==s[i+1]){
                    count++;
                }
                else{
                    if(count==1)    printf("%c",s[i]);
                    else if(count==2){          //字母只连续出现2次,不替换,直接输出
                        printf("%c%c",s[i],s[i]);
                        count=1;
                    }  
                    else if(count>2){        //大于2的时候输出
                        printf("%d%c",count,s[i]);
                        count=1;
                    }
                }
            }
            printf("
    ");
        }
        return 0;
    }
  • 相关阅读:
    linux配置虚拟机的网络服务
    js动态生成层方法 不懂得加QQ 2270312758
    js中let和var的区别 不懂得加QQ 2270312758
    C#特性详解
    (四)python之文件处理
    (三)python之字符编码
    (二)Python之数据类型
    (一)python基础
    (2)库相关操作
    (1)初始数据库
  • 原文地址:https://www.cnblogs.com/shiliuxinya/p/12168629.html
Copyright © 2020-2023  润新知