【Python算法】:压缩

python——字符串压缩 类型:字典。 阅读详情

小Q想要给他的朋友发送一个神秘字符串,但是他发现字符串的过于长了,于是小Q发明了一种压缩算法对字符串中重复的部分进行了压缩,对于字符串中连续的m个相同字符串S将会压缩为m|S,例如字符串ABCABCABC将会被压缩为[3|ABC],现在小Q的同学收到了小Q发送过来的字符串,你能帮助他进行解压缩么?

输入描述:
输入第一行包含一个字符串s,代表压缩后的字符串。
S的长度<=1000;
S仅包含大写字母、[、]、|;
解压后的字符串长度不超过100000;
压缩递归层数不超过10层;

输出描述:
输出一个字符串,代表解压后的字符串。

输入例子1:
HG[3|B[2|CA]]F

输出例子1:
HGBCACABCACABCACAF

例子说明1:
HG[3|B[2|CA]]F−>HG[3|BCACA]F−>HGBCACABCACABCACAF

方法1:调用正则包re,由内往外解析即可,几行代码就解决咯

import re
word = input()#HG[3|B[2|CA]]F
while '|' in word:
    for code in re.findall('\[[0-9]+\|[A-Z]+\]', word):
        info = re.findall('\[(.*?)\|(.*?)\]', code)[0]
        word = word.replace(code, info[1]*int(info[0]))
print(word)

方法2:不调用re,直接上手,也是依照从内向外的方式解析(略麻烦!)

def decode(code):
    a = code.index('[')
    b = code.index('|')
    c = code.index(']')
    num = int(code[a+1:b])
    val = code[b+1:c]
    return val*num

def split(code):
    left = [[i,'['] for i in range(len(code)) if code[i]=='[']
    right = [[i,']'] for i in range(len(code)) if code[i]==']']
    kuo = left+right
    kuo.sort()
    kuo_xu = ''
    kuo_va = []
    for i in kuo:
        kuo_va.append(i[0])
        kuo_xu += i[1]
    loca = kuo_xu.index('[]')
    b = code[kuo_va[loca]:kuo_va[loca+1]+1]
    c = decode(b)
    code = code.replace(b, c)
    return code

code = input()#HG[3|B[2|CA]]F
for i in range(code.count('[')):
    code = split(code)
print(code)

由于是笔试,当然首选re啦!

Python123之字符串压缩#134865 描述 输入一个字符串s,s由若干个非数字的字符组成且相同的字符保证连续排列,将字符串按照下列规则进行长度压缩‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬ 将字符放前面, 阅读详情

相关推荐

基于哈夫曼编码的压缩算法的Python实现

1.背景 离散数学老师布置了一份大作业,作业题目就是用自己喜欢的编程语言来实现课上所学的哈夫曼编码算法(Huffman Coding)。哈夫曼编码是一种采用变长编码表来表示数据的编码方式。其详细介绍详见下方引自维基百科的引文。 在计算机数据处理中,霍夫曼编码使用变长编码表对源符号(如文件中的一个字母)进行编码,其中变长编码表是通过一种评估来源符号出现机率的方法得到的,出现机率高的字母使用较短...

字节莫的优快云博客 9468

【LeetCode】面试题01.06 字符串压缩

字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。 比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。 你可以假设字符串中只包含大小写英文字母(a至z)。 示例1: 输入:"aabcccccaaa" 输出:"a2b1c5a3" 示例2: 输入:"abbccd" 输出:"abbccd" 解释:"abbccd"压缩后为"a1b2c2d1",比原字符串长度更长。 class Solution: def .

gx123456sh的博客 415

压缩感知重构算法之OMP算法---python实现

#coding:utf-8 # DCT基作为稀疏基,重建算法为OMP算法 ,图像按列进行处理 # 导入所需的第三方库文件 import numpy as np import math from PIL import Image #读取图像,并变成numpy类型的 array im = np.array(Image.open('/Users/sanfordzhu/Desktop/lena.bm...

SanfordZhu的博客 6799

Python3 解题:字符串压缩

Python3 解题:字符串压缩 原题 https://leetcode-cn.com/problems/compress-string-lcci/ 题目: 字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)。 示例1...

qq_18138105的博客 1073

python哈夫曼压缩与解压算法

python哈夫曼压缩与解压算法 压缩 #encoding: utf-8 from bitarray import bitarray import random import json class Node(object): """docstring for Node""" left=None right=None times=0 char = '' parent=None def...

klli15的博客 1596

Python中使用哈夫曼算法实现文件的压缩与解压缩

比较详细的注释,故在此不多解释,注意.docx文件效率比较差,因为其本身已经压缩,txt则可以见到明显的压缩效果 #!/usr/bin/env python3 # -*- coding: utf-8 -*- import sys sys.setrecursionlimit(1000000) #python默认的递归深度有限,约900多,压缩文件时会超过,故引用sys修改最大递归深度 # 代...

cc815107613的博客 2908

python字符串压缩以及还原

python字符串压缩以及还原

一起学习哈 1877

用rsl_rl训练四足机器人走梅花桩:PPO算法调参实战与避坑指南

本文详细介绍了如何使用rsl_rl框架和PPO算法训练四足机器人在梅花桩上行走的实战经验。通过分析梅花桩场景的独特挑战,提供PPO算法关键参数配置策略、奖励函数设计方法以及常见问题的解决方案,帮助开发者高效实现机器人平衡控制。文章特别强调了仿真到实机的过渡技巧,最终实现98%的过桩成功率。

weixin_29103191的博客 221

python压缩算法_使用Python(lzma)使用LZMA算法进行压缩

Lempel-谢夫马尔可夫链算法使用设有比其它压缩算法更高的压缩比的字典压缩方案(LZMA)执行无损数据压缩。Python的lzma模块由用于通过LZMA算法压缩和解压缩数据的类和便利函数组成。尽管此模块中的功能类似于bz2模块,但是与BZ2File类相比,LZMAFile类不是线程安全的。同样,open()lzma模块中的函数是打开lzma压缩文件对象的最简单方法。打开()此函数将打开LZMA压...

weixin_30641597的博客 2351

组态王|以一定的时间间隔查询某个时间段内的历史数据

使用该函数其他都可以满足,唯一问题是变量的选择,当切换站点后查询历史数据时,所选的变量依然是上次站点查询时所选择的变量,每当更换站点查询时都需要重新选择变量,这一点太繁琐,是用户和操作者无法忍受的。但是由于现场可能数据变化并非太过频繁,想要实现记录频率不变,还是以1分钟一次的频率进行存储,但是报表查询的时候想要只显示整点的数据。其中日历控件的设置与之前的历史数据查询是一样的,报表的抬头设置都是不用变的,此处不再赘述,有兴趣的可以。以上为组态王中以一定的时间间隔查询某个时间段内的历史数据的实现过程。

做有价值的事,积累有价值的笔记! 2547

小白学习图像处理6——Canny边缘检测算法原理

目录结构一、高斯滤波二、梯度计算1、原理2、代码如下三、非极大值抑制三、双阈值检测四、matlab 的 edge函数五、总结 Canny边缘检测算法主要步骤:高斯滤波、梯度计算、非极大值抑制和双阈值检测。 一、高斯滤波   使用高斯滤波的目的是平滑图像,滤除图像中的部分噪声(因为微分算子对噪声很敏感)。高斯滤波具体办法是生成一个高斯模板,使用卷积进行时域滤波: img = im2double(im...

我有两颗糖 7791

python压缩算法_轨迹数据压缩算法

数据P0,107.605,137.329P1,122.274,169.126P2,132.559,179.311P3,153.324,184.276P4,171.884,174.654P5,186.408,168.634P6,196.566,145.204P7,200.549,127.877P8,211.391,118.179P9,216.318,116.547P10,225.197,122.79...

weixin_39795971的博客 594

Keysight ADS新手必看:3分钟搞定TDR模拟的保姆级教程(附差分信号设置技巧)

本文为Keysight ADS新手提供TDR模拟的保姆级教程,详细介绍了从基础环境准备到差分信号设置的全流程。通过内置模板调用、待测器件连接和仿真结果解读,帮助用户快速掌握TDR模拟技术,特别包含差分信号配置技巧,提升信号完整性分析效率。

weixin_30872157的博客 197

python 压缩算法_Python LZW 算法

Python LZW 算法LZW 压缩算法string = "thisisthe"dictionary = {chr(i):i for i in range(97,123)}last = 256p = ""result = []for c in string:pc = p+cif pc in dictionary:p = pcelse:result.append(dictionary[p])dic...

weixin_39585070的博客 398

Jacobi正交多项式在数值分析中的应用与实现

本文深入探讨了Jacobi正交多项式在数值分析中的核心应用与实现。作为最通用的正交多项式族,Jacobi多项式通过参数α和β的调节,可退化为切比雪夫、勒让德等经典多项式,为函数逼近、奇异积分和微分方程求解提供了统一框架。文章重点解析了其在加权高斯积分(高斯-雅可比积分)和谱方法求解微分方程中的关键作用,并提供了基于递归关系和SciPy的稳定高效实现方案,帮助读者掌握这一强大的数值计算工具。

weixin_29306011的博客 246

Ubuntu20.04系统笔记本网卡AX211无法找到wifi问题

之前电脑的系统是18.04基本上安装好了系统,可以直接连上wifi,在买了拯救者y9000p2022版本之后,因为网卡太新,安装ubuntu18.04或者20.04之后会没有wifi连接,非常不方便。于是上网找了各种帖子去解决这个问题。具体实现有所不同。 主要参考了这个帖子来解决的:http://t.csdn.cn/7807R 首先: sudo apt install flex bison 然后: git clone https://github.com/intel/backpor.

weixin_42825962的博客 1万+

压缩感知重构算法之OMP算法python实现

压缩感知重构算法之OMP算法python实现 压缩感知重构算法之CoSaMP算法python实现 压缩感知重构算法之SP算法python实现 压缩感知重构算法之IHT算法python实现 压缩感知重构算法之OLS算法python实现 压缩感知重构算法之IRLS算法python实现本文主要简单介绍了利用python代码实现压缩感知的过程。压缩感知简介【具体可以参考这篇文章】 假设一维信号x

程序员学编程 的专栏 2万+

Palantir 产品架构深度解析:从本体到AI的决策智能平台

本文深度解析了Palantir决策智能平台的核心产品架构。其核心在于构建企业级的“本体”(Ontology),即业务世界的“数字孪生”,通过数据、逻辑、操作三层抽象统一语义。平台以此为基础,通过Foundry构建数字孪生,并通过AIP(人工智能平台)实现本体增强生成(OAG),将AI深度融入业务,形成从数据感知、智能分析到行动执行的完整决策闭环。

ooo22的博客 736

python压缩算法_用python实现LZ78压缩算法

以下是两者的压缩和解压缩:def compress(uncompressed):"""Compress a string to a list of output symbols."""# Build the dictionary.dict_size = 256dictionary = dict((chr(i), chr(i)) for i in xrange(dict_size))# in Pyt...

weixin_39998881的博客 1208

NXP(恩智浦)—TJA1043TK CAN收发器芯片详解

本文章主要讲解NXP(恩智浦)—TJA1043TK CAN收发器的相关知识。

零零刷的博客 2202

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

python压缩算法_基于哈夫曼算法的压缩解压缩程序--python实现

一.实现效果【压缩】huffman.gif【解压缩】huffman2.gif【压缩效率】EAA}7T{AT2@L77{25MI}_YD.png二.哈夫曼算法哈夫曼又称霍夫曼编码,是一种编码方式,哈夫曼编码是可变字长编码(VLC)的一种。Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,有时称之为最佳编码,一般就叫做Huffman编码(有时也称为...

weixin_39963255的博客 895

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

python 压缩算法_lzma — 用 LZMA 算法压缩

### 导航- [索引](../genindex.xhtml "总目录")- [模块](../py-modindex.xhtml "Python 模块索引") |- [下一页](zipfile.xhtml "zipfile --- 在 ZIP 归档中工作") |- [上一页](bz2.xhtml "bz2 --- 对 bzip2 压缩算法的支持") |- ![](https://box.kancl...

weixin_39855944的博客 1469

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

python压缩算法_LZ77压缩算法编码Python实现原理图解

前言LZ77算法是无损压缩算法,由以色列人Abraham Lempel发表于1977年。LZ77是典型的基于字典的压缩算法,现在很多压缩技术都是基于LZ77。鉴于其在数据压缩领域的地位,本文将结合图片和源码详细介绍其原理。原理介绍:首先介绍几个专业术语。1.lookahead buffer(不知道怎么用中文表述,暂时称为待编码区):等待编码的区域2. search buffer:已经编码的区域,搜...

weixin_39608134的博客 442

python压缩算法_Python基于opencv的图像压缩算法实例分析

本文实例讲述了Python基于opencv的图像压缩算法。分享给大家供大家参考,具体如下:插值方法:CV_INTER_NN - 最近邻插值,CV_INTER_LINEAR - 双线性插值 (缺省使用)CV_INTER_AREA - 使用象素关系重采样。当图像缩小时候,该方法可以避免波纹出现。当图像放大时,类似于 CV_INTER_NN 方法..CV_INTER_CUBIC - 立方插值.函数 cv...

weixin_39819152的博客 640

Python字符串压缩算法

本文介绍了数据压缩的基本概念和三种算法。解释压缩比和时间效率,分析了三种压缩算法:游程编码(RLE)、LZW字典编码、霍夫曼统计编码。并配Python实现示例,展示了压缩原理和应用效果。

记录应用与学习笔记,Python、算法、工具、踩坑... 1065
上一篇: 【Python算法】:逛街
下一篇: 【Python算法】:假期
QuantCoder
博客等级 码龄5年 14粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值