洛谷 B2123 字符串 p 型编码

2024-04-29 05:36
文章标签 洛谷 b2123 编码 字符串

本文主要是介绍洛谷 B2123 字符串 p 型编码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

字符串 p 型编码

题目描述

给定一个完全由数字字符(‘0’,‘1’,‘2’,…,‘9’)构成的字符串 str ,请写出 str 的 p 型编码串。例如:字符串 122344111 可被描述为 1个1、2个2、1个3、2个4、3个1 ,因此我们说122344111 的 p 型编码串为 1122132431 ;类似的道理,编码串 101 可以用来描述 111111111100000000000 可描述为 11个0,因此它的p型编码串即为 110100200300 可描述为 1个1、2个 0、1个2、2个0、1个3、2个0,因此它的 p 型编码串为 112012201320

输入格式

输入仅一行,包含字符串 str。每一行字符串最多包含 1000 1000 1000 个数字字符。

输出格式

输出该字符串对应的 p p p 型编码串。

样例 #1

样例输入 #1

122344111

样例输出 #1

1122132431

做题背景

今天加训太辛苦,奖励自己一次。 奖励自己一个入门题。

原题

洛谷B2123——传送门

思路&代码

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;int main()
{string s;cin >> s;int cnt = 0;char c;s = 'y' + s; // 加入一个无关字符,便于遍历for (int i = 1; i < s.size(); i++){if (s[i] != s[i - 1]) // 每次遇到不相等时,说明这是一个新字符{if (i != 1) // 如果i不等于1,则先前存在旧字符,需要输出它的信息:即字符个数和字符本身{cout << cnt << c;}c = s[i]; // 记录该字符cnt = 1;  // 当前该字符个数为1}else{cnt++; // 有重复,该字符个数++}}cout << cnt << c; // 输出最后一个遇到的新字符的信息return 0;
}

这篇关于洛谷 B2123 字符串 p 型编码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/945223

相关文章

String字符串与java.util.Date的相互转化

1、将String转化为Date类型 public static void testStringConvertToDate(){String stringDate = "2008-10-05";/*yyyy-MM-dd格式一定要与stringDate的格式一致*/SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");try {

String字符串转化为db2的日期类型

JDK中的日期类型为java.util.Date类型,数据库中的日期类型为java.sql.Date类型,那么如何在java程序中定义一个日期的字符串,通过转化数据库中的Date类型,然后插入数据库呢? SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); /**yyyy-MM-dd为字符串的格式**/Strin

Python操作Redis(连接方式、通用操作、字符串操作、Hash操作、List操作)

Python操作Redis 目录 Python操作Redis普通连接连接池连接通用操作字符串操作Hash操作List操作 安装:pip install redis 普通连接 每次连接都会创建新的连接 import redisconn = redis.Redis(host='127.0.0.1',port=6379,db=0, # 数据库编号(Redis支持多数据库)pas

Js/Jquery- Base64和UrlEncode编码解码

最近几天遇到一些URL参数明文显示的问题,因为是明文显示,容易让人通过改变参数查看到他没有权限看到内容。   一开始我的做法是自定义了规则,然后原始的那种URL编码。可是URL编译后效果不理想,他无法编译数字,而且编码后的字符串太长。   最后我在网上用了BASE64这种。感觉还可以。摘录下来,做一下备忘,以后还会用到   C# BASE64 解码和编码 s

BASE64编码之javascript类库BASE64.js

Base64是一种基于64个可打印字符来表示二进制数据的表示方法。由于2的6次方等于64,所以每6个比特为一个单元,对应某个可打印字符。三个字节有24个比特,对应于4个Base64单元,即3个字节需要用4个可打印字符来表示。它可用来作为电子邮件的传输编码。在Base64中的可打印字符包括字母A-Z、a-z、数字0-9 ,这样共有62个字符,此外两个可打印符号在不同的系统中而不同(本类库里面用的是

JAVA输出带BOM的UTF-8编码的文件

当从http 的response输出CSV文件的时候,设置为utf8的时候默认是不带 bom的,但是windows的Excel是使用bom来确认utf8编码的,所有需要把bom写到文件的开头。 微软在 UTF-8 中使用 BOM 是因为这样可以把 UTF-8 和 ASCII 等编码明确区分开。 否则用Excel打开CSV文件有可能是乱码的 示例代码如下: response.setContentTy

update 一个字段等于该表中的某个字段拼接一个字符串

update  `znxfy_user` set realname = nickname,shopname=concat(nickname,"的店铺"),shoplogo=headimgurl where is_salesmen=2 and  user_rank!=1;

获取字符串中最后一个字母前面(包含这个字母)和最后这个字母后面的字符串...

<?php /* *获取一个字符串中最后一个字母后面的数字;例如4rt03wlg10r200r001获取到的的最后一个r后面的001 */ function get_str_last_number($str){ $preg= '/[A-Za-z]/'; $replacement = '@';  $newstr=preg_replace($preg, $replacement, $str); $ar

MYSQL表中某个字段有换行符、回车符替换成空字符串

mysql某个字段,带引号查不出来,不带引号却可以查出来,有可能就是因为这个字段有换行或者回车符 mysql处理方法: UPDATE 表名 SET  字段= REPLACE(REPLACE(字段, CHAR(10), ''), CHAR(13), '');char(10):  换行符 char(13):  回车符 PHP处理方法: $str = str_re

字符数组以及字符串相关的几个函数

一.字符数组 1.定义:格式如下 char a[10];  //此处就表示定义了一个长度为10的字符数组 2.引用: 也和其余的数组一样,是下标引用。 3.初始化: 如下代码为字符数组初始化的几种情况: int main(){char arr[5] = { 'a','b','c','d','e'};char arr[] = { 'a','b','c','d','e' };//与上面