zoukankan      html  css  js  c++  java
  • 王宁宁宁

    链接: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;
    }
  • 相关阅读:
    idea高效实用快捷键【待补充】
    前台sessionStorage存取对象注意事项
    SpringBoot2.0 整合 JWT 框架后台生成token
    vue暗含玄机的v-for指令
    【串线篇】spring boot自定义starter
    【串线篇】spring boot启动配置原理
    【串线篇】spring boot整合SpringData JPA
    docker安装MySQL5.7示例!!坑,ERROR 1045 (28000): Access denied for user
    docker常用命令及操作
    docker简介及安装
  • 原文地址:https://www.cnblogs.com/shiliuxinya/p/12168629.html
Copyright © 2011-2022 走看看