算法第六题:压缩字符串 2021-08-21

2023-11-10

一、题目
给你一个字符数组 chars ,请使用下述算法压缩:

从一个空字符串 s 开始。对于 chars 中的每组 连续重复字符 :

如果这一组长度为 1 ,则将字符追加到 s 中。
否则,需要向 s 追加字符,后跟这一组的长度。
压缩后得到的字符串 s 不应该直接返回 ,需要转储到字符数组 chars 中。需要注意的是,如果组长度为 10 或 10 以上,则在 chars 数组中会被拆分为多个字符。

请在 修改完输入数组后 ,返回该数组的新长度。

你必须设计并实现一个只使用常量额外空间的算法来解决此问题。

二、思路
通过双指针进行解答,i指向的是要读的位置,j指向的写入位置的下一个位置。字符直接写入,然后统计重复字符的个数。进行数字转字符串,字符串转列表。同样数字转字符串的问题可以通过栈进行设计。

三、代码

def compress(self, chars: List[str]) -> int:
        i,j=0,0
        if len(chars)==1:
            return j+1 
        while i<len(chars):
            chars[j]=chars[i]
            i,j,n=i+1,j+1,1
            while i<len(chars) and chars[i-1] == chars[i] :
                i, n = i + 1, n + 1
            if n>1:
                ns='%d'%n
                nb=list(ns)
                chars[j:j+len(nb)]=nb
                j=j+len(nb)
        return j

将数字转换为字符列表的栈实现

# 希望能把每位的值保存起来,存到列表中
# 用循环计算出每位的值,放入栈中,其中栈用list实现
i,j,n=1,1,9
chars=['0' for i in range(n+1)]
stack = list()
while b>0:
    a = b % 10
    b=int(b/10)
    stack.append(a)
print(stack)
# 将栈中的数据读入目标列表中
p=len(stack)
while i<=p:
    chars[j]='%d'%stack.pop(-1)
    j,i=j+1,i+1
print(chars)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

算法第六题:压缩字符串 2021-08-21 的相关文章

  • 如果两点之间的距离低于某个阈值,则从列表中删除点

    我有一个点列表 只有当它们之间的距离大于某个阈值时 我才想保留列表中的点 因此 从第一个点开始 如果第一个点和第二个点之间的距离小于阈值 那么我将删除第二个点 然后计算第一个点和第三个点之间的距离 如果该距离小于阈值 则比较第一点和第四点
  • Lighttpd 和 cgi python

    我正在尝试通过 lighttpd 执行一些 python 脚本 但是当我尝试运行它时 我只得到一个要求我下载的空白文件 lighttpd conf server modules mod access mod alias mod access
  • 为什么从 Pandas 1.0 中删除了日期时间?

    我在 pandas 中处理大量数据分析并每天使用 pandas datetime 最近我收到警告 FutureWarning pandas datetime 类已弃用 并将在未来版本中从 pandas 中删除 改为从 datetime 模块
  • 使用特定的类/函数预加载 Jupyter Notebook

    我想预加载一个笔记本 其中包含我在另一个文件中定义的特定类 函数 更具体地说 我想用 python 来做到这一点 比如加载一个配置文件 包含所有相关的类 函数 目前 我正在使用 python 生成笔记本并在服务器上自动启动它们 因为不同的
  • 处理 Python 行为测试框架中的异常

    我一直在考虑从鼻子转向行为测试 摩卡 柴等已经宠坏了我 到目前为止一切都很好 但除了以下之外 我似乎无法找出任何测试异常的方法 then It throws a KeyError exception def step impl contex
  • 使用 kivy textinput 的 'input_type' 属性的问题

    您好 我在使用 kivy 的文本输入小部件的 input type 属性时遇到问题 问题是我制作了两个自定义文本输入 其中一个称为 StrText 其中设置了 input type text 然后是第二个文本输入 名为 NumText 其
  • 立体太阳图 matplotlib 极坐标图 python

    我正在尝试创建一个与以下类似的简单的立体太阳路径图 http wiki naturalfrequent com wiki Sun Path Diagram http wiki naturalfrequency com wiki Sun Pa
  • 如何使用 Pandas、Numpy 加速 Python 中的嵌套 for 循环逻辑?

    我想检查一下表的字段是否TestProject包含了Client端传入的参数 嵌套for循环很丑陋 有什么高效简单的方法来实现吗 非常感谢您的任何建议 def test parameter a list parameter b list g
  • YOLOv8获取预测边界框

    我想将 OpenCV 与 YOLOv8 集成ultralytics 所以我想从模型预测中获取边界框坐标 我该怎么做呢 from ultralytics import YOLO import cv2 model YOLO yolov8n pt
  • Python 2:SMTPServerDisconnected:连接意外关闭

    我在用 Python 发送电子邮件时遇到一个小问题 me my email address you recipient s email address me email protected cdn cgi l email protectio
  • Python,将函数的输出重定向到文件中

    我正在尝试将函数的输出存储到Python中的文件中 我想做的是这样的 def test print This is a Test file open Log a file write test file close 但是当我这样做时 我收到
  • 在Python中检索PostgreSQL数据库的新记录

    在数据库表中 第二列和第三列有数字 将会不断添加新行 每次 每当数据库表中添加新行时 python 都需要不断检查它们 当 sql 表中收到的新行数低于 105 时 python 应打印一条通知消息 警告 数量已降至 105 以下 另一方面
  • Docker 中的 Python 日志记录

    我正在 Ubuntu Web 服务器上的 Docker 容器中测试运行 python 脚本 我正在尝试查找由 Python Logger 模块生成的日志文件 下面是我的Python脚本 import time import logging
  • 如何通过索引列表从 dask 数据框中选择数据?

    我想根据索引列表从 dask 数据框中选择行 我怎样才能做到这一点 Example 假设我有以下 dask 数据框 dict A 1 2 3 4 5 6 7 B 2 3 4 5 6 7 8 index x1 a2 x3 c4 x5 y6 x
  • Jupyter Notebook 找不到 Python 模块

    不知道发生了什么 但每当我使用 ipython 氢 原子 或 jupyter 笔记本时都找不到任何已安装的模块 我知道我安装了 pandas 但笔记本说找不到 我应该补充一点 当我正常运行脚本时 python script py 它确实导入
  • pip 列出活动 virtualenv 中的全局包

    将 pip 从 1 4 x 升级到 1 5 后pip freeze输出我的全局安装 系统 软件包的列表 而不是我的 virtualenv 中安装的软件包的列表 我尝试再次降级到 1 4 但这并不能解决我的问题 这有点类似于这个问题 http
  • 在本地网络上运行 Bokeh 服务器

    我有一个简单的 Bokeh 应用程序 名为app py如下 contents of app py from bokeh client import push session from bokeh embed import server do
  • cv2.VideoWriter:请求一个元组作为 Size 参数,然后拒绝它

    我正在使用 OpenCV 4 0 和 Python 3 7 创建延时视频 构造 VideoWriter 对象时 文档表示 Size 参数应该是一个元组 当我给它一个元组时 它拒绝它 当我尝试用其他东西替换它时 它不会接受它 因为它说参数不是
  • 使用 z = f(x, y) 形式的 B 样条方法来拟合 z = f(x)

    作为一个潜在的解决方案这个问题 https stackoverflow com questions 76476327 how to avoid creating many binary switching variables in gekk
  • Kivy - 单击按钮时编辑标签

    我希望 Button1 在单击时编辑标签 etykietka 但我不知道如何操作 你有什么想法吗 class Zastepstwa App def build self lista WebOps getList layout BoxLayo

随机推荐

  • Mac系统CLion中C语言EOF如何结束输入(楼主亲测有效)

    今日发现在mac系统CLion中C语言EOF没有办法结束输入 如下代码 我写了一个C语言程序 以EOF结束 include
  • 《Thinking in Java》读后总结与感想

    作为Java界的四大名著之一 Thinking in Java 一直备受推崇 我很早就知道了这本书 当时只是初涉Java 粗略的翻了翻之后觉得看起来这本书讲的比较深就没有再去碰它 后来Java基础学完之后又忙着学Android开发的知识 就
  • 如何打开mysql_MySQL教程

    MySQL经常和 数据库 连在一起读 这很容易对新手造成误解 认为MySQL就是一个数据库 其实不是这样 MySQL是数据库的集合 MySQL里面有很多数据库 那么数据是直接存在数据库里的吗 并不 数据库底下还有一个叫做数据表的存储单元 数
  • 无需公网IP,安全访问云端资源,3步搞定

    某企业将OA ERP Git代码库等业务资源 分别部署在了公有云和私有云 但随着业务发展 分部和移动办公人员逐渐增多 如何高效实现50名员工安全远程访问云端资源成了难题 使用MPLS专线 IPSec VPN等传统方案实现远程访问 不仅实施费
  • Spring的入门及案例----Ioc

    一 Spring的核心 Spring的核心是控制反转 IoC 和面向切面 AOP 简单来说 Spring是一个分层的JavaSE EEfull stack 一站式 轻量级开源框架 IoC 控制反转 对于Spring来说 Spring创建对象
  • 通过css内修改input框placeholder样式

    使用css内修改input框placeholder样式 需求将input框内placeholder属性文字设置颜色及字体大小 修改前 修改后 代码 input webkit input placeholder WebKit Blink Ed
  • 利用std::async实现异步功能

    c 11标准推出了多线程功能 其中我比较喜欢的是把async和future联合起来使用 实现异步功能 目录 首先介绍async的使用办法 输入参数 返回值 std future的使用办法 异步结果的获取 等待异步结果的返回 wait wai
  • Android图像开源视图:SmartImageView

    项目需要 开发中需要加载图片 自己要写图片从网上下载的方法 还要写缓存 等等 在网上找到一个开源项目 smartImageVIew 支持从URL和通讯录中获取图像 可以替代Android标准的ImageView 特征 根据URL地址装载图像
  • C# ---Constructor, Object Initializer, Property, Constant, and readonly

    C Constructor Object Initializer Property Constant and Readonly Constructor and Object Initializer Fields and Property 如
  • queue使用方法

    queue使用方法 提示 如果队列满了 那么使用put放入数据会等待 直到队列有空闲位置才可以放入 放入消息的时候不会进行等待 如果发现队列满了不能放入数据 那么会直接崩溃 import multiprocessing import tim
  • Spring Boot使用@Async实现异步调用

    1 Spring Boot使用 Async实现异步调用 链接 link 原文 http blog csdn net a286352250 article details 53157822 项目GitHub地址 https github co
  • 大数据背景下如何加强高校财务管理水平

    1 建立软 硬件平台 智能的软件平台是大数据技术实施的主要依托 必须加强与大数 据相适应的平台建设 才能充分发挥大数据技术的优势 服务好高校 财务管理工作 云平台存储便捷 处理高效 管理智能 是与大数据技术适应的 最佳软件平台 因此 高校要
  • python宽度学习训练后模型的持久化存储和快速调用

    在模型训练完成后 我们需要对我们训练出来的模型进行持久性储存 这样既能将我们调参后得到的最佳模型进行存储 还可以方便后期同团队的人进行调用预测 1 原理 此处用到的是sklearn库中的joblib包进行存储和加载 因为宽度学习的类属于自定
  • 华为OD机考-构建输入和输出

    华为OD机考 ACM模式下创建输入 概述 下文列举机考过程中常见输入的构造方法 如字符串 多维数组等 并对用到的函数进行详细讲解 最后通过真题实操巩固知识点 一 机考中常见的输入 1 输入字符串 输入一行字符串 str1 input pri
  • 36 数据增广 [动手学深度学习v2]

    数据增强 增加一个已有数据集 使得有更多的多样性 在语言里面加入各种不同的背景噪音 改变图片的颜色和形状 图像增广 import torch import torchvision from torch import nn 左右翻转图像 to
  • 深度学习刷 SOTA 有哪些 trick?

    深度学习刷 SOTA 有哪些 trick 此问题在知乎上有超 1700 人关注 浏览量超 32 万 相信是大家都非常关心的问题 快一起看看下面的分享吧 希望可以帮助到大家 对于图像分类任务 让我们以 Swin Transformer 中使用
  • 【2023】基于docker 实现部署jar包项目(包括单个和多个一起部署)

    建议学习本博客之前 需要对docke的基本命令有过学习 目录 前言 1 项目打包 2 编写Dockerfile文件 2 1 单个jar部署 Dockerfile文件常用命令 2 2 1 编写一个Dockerfile 文件格式制作镜像 2 1
  • AngularJs的生命周期

    AngularJs的生命周期分为六个阶段 编译 AngularJs会遍历浏览器提供的dom树 尝试参照已注册的指令集来匹配每个元素 属性 注释和css类 每当匹配一个指令时 ag就会调用该指令的编译函数 该函数返回一个连接函数 ag会收集所
  • linux 命令行操作串口

    linux 命令行操作串口 1 获取串口号 2 配置串口属性 stty命令 3 串口数据读写操作 4 解析数据 5 后台运行 6 绘制数据 Linux stty命令 一 参数 二 用法 Linux下minicom操作 Linux minic
  • 算法第六题:压缩字符串 2021-08-21

    一 题目 给你一个字符数组 chars 请使用下述算法压缩 从一个空字符串 s 开始 对于 chars 中的每组 连续重复字符 如果这一组长度为 1 则将字符追加到 s 中 否则 需要向 s 追加字符 后跟这一组的长度 压缩后得到的字符串