第五章 字符串专题 ---------------- 5.5 题解:压缩字符串

【程序员面试金典】基本字符串压缩 【程序员面试金典】基本字符串压缩题目利用字符重复出现的次数,编写一个方法,实现基本的字符串压缩功能。比如,字符串“aabcccccaaa”经压缩会变成“a2b1c5a3”。若压缩后的字符串没有变短,则返回原先的字符串。 给定一个string iniString为待压缩的串(长度小于等于10000),保证串内字符均由大小写英文字母组成,返回一个string,为所求的压缩后或未变化的串。 测试样例 阅读详情

题目:

       压缩字符串。实现一个算法,利用字符重复出现的次数,实现基本的字符串压缩功能。比如,测试样例"aabcccccaaa" 返回:"a2b1c5a3"。若压缩后的字符串没有变短,则返回原先的字符串。

代码: 

public class Zipper {

    public static void main(String[] args) {
        String res = zipString("aabcccccaaa");
        System.out.println(res);
    }
    
    static String zipString(String src){
        int count = 0; // 记录前一个字符的重复次数
        char last = 0; // 上一个字符
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < src.length(); i++) {
            char charAt = src.charAt(i);
            if (sb.length()==0) {  // 处理第一个字符
                sb.append(charAt);
                count++;
            }else {
                if (last==charAt){  // 和上一个字符相同
                    count++;
                }else {              // 和上一个字符不同
                    sb.append(count).append(charAt);
                    count = 1;
                }
            }
            last = charAt;
        }
        // 考虑最后一个字符的重复次数
        if (count>=1) {
            sb.append(count);
        }
        // 比较新字符串和原字符串
        if (sb.length()>= src.length()) {
            System.out.println("字符串没有变短:"+sb.toString());
            return "原字符串:"+src;
        }
        return sb.toString();
    }

}

C++程序代码:

 

#include<iostream>
#include<algorithm>
using namespace std;

string zipString(string str)
{
	int count=1;
	int len=str.length();
	char c=str[0];
	string ans;
	for(int i=1;i<len;i++)
	{
		char temp=str[i];
		if(temp==str[i-1])
		{
			count++;
		}
		else
		{
			ans+=str[i-1];
			ans+=char(count+'0');
			count=1;			
		}
	}
	if(count>0)
	{
		ans+=str[len-1];
		ans+=char(count+'0');
	}	
	else
	{
		ans+=str[len-1];
		ans+='1';
	}
	return ans;
}

int main()
{
	string str="aacccd";
	cout<<zipString(str);
	return 0;
} 

结果:

 

参考:https://www.cnblogs.com/xiaoyh/p/10304381.html

【Python语言】Python控制语言实验 实验1:判断是否是回文数 实验2:猜年龄 实验3:读取列表中的字典 实验4:压缩字符串 阅读详情

相关推荐

2022年0701-Com.Java.Basis第六课《主题String》

算法在于自己的实践,在于时间的积累。是一个漫长的过程。我们备战蓝桥杯一个多月的时间,我了解到了只是基础真正的算法高手都在练习算法,因为算法真的能让你的大脑思维提升。这只是我训练的八章成果。算法的在于你要有计算机语言去执行你要实现的功能。面向对象的思维思考问题。......

qq_56248592的博客 467

Java-字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能

示例1: 输入:"aabcccccaaa" 输出:"a2b1c5a3" 示例2: 输入:"abbccd" 输出:"abbccd" 解释:"abbccd"压缩后为"a1b2c2d1",比原字符串长度更长。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/compress-string-lcci 著作权归领扣网络所有。 class Solution { public String compressString(String S)...

qq_39313162的博客 2035

远程桌面报‘数据加密错误‘?可能是网卡设置惹的祸(附TCP校验关闭教程)

本文深入分析远程桌面连接中出现的'数据加密错误'问题,指出网卡设置可能是根本原因,并提供详细的TCP校验关闭教程。通过禁用网卡高级属性中的'TCP校验和IPv4'与'IPv4承载卸载'功能,可有效解决RDP协议与硬件加速的兼容性问题,适用于Windows和Linux系统。

view3的博客 279

NC187 压缩字符串(二)

利用字符重复出现的次数,编写一种方法,最多可以先删掉k个字符,再实现字符串压缩,返回压缩过后字符串的最小长度。比如,字符串aabcccccaaa,k=0时,会压缩变为a2bc5a3,返回7。自测输入三个结果都是没有问题的,但是对于随即删除k个字母导致长度最短的情况还没有完全搞清楚,有没有大佬看见帮助解答一下。2.新增一个先删除k个字符的处理,也可以不删除,也可以删除少于k个字符,要达到压缩过后字符串的长度为最小。3.字符串中只包含大小写英文字母(a至z)0

weixin_64304788的博客 664

谈谈人大金仓数据库

人大金仓数据库(Kingbase)是国产自主研发的关系型数据库管理系统,兼容主流数据库语法,支持高并发、高安全性及国产化适配。该数据库提供完整的安装部署方案,包括环境准备、初始化配置和验证流程,并配备专业的数据迁移工具(KDMS)实现从Oracle/MySQL等数据库的平滑迁移。系统提供KStudio等图形化管理工具,支持性能监控、备份恢复等运维功能,同时具备性能调优、高可用架构、分区表管理等高级特性,满足政府、金融等领域的企业级需求。

蜚鸣的博客 2105

ZYNQ裸机LWIP双网口实现

文章目录前言一、LWIP双网口二、使用步骤1.部分说明2.部分代码总结 前言 一、LWIP双网口 由于项目需要多通讯口,查阅资料发现lwip支持多网口操作。于是,就开搞了。 二、使用步骤 1.部分说明 利用xemac_add函数在网卡链表中添加一个网卡,即使用netif块重复xemac_add操作。 先用轮询的方式实现双网口,后期修改为中断模式 2.部分代码 导入官方例程LWip echo server, 修改main函数,增加一个netif块 #if LWIP_IPV6==0 #if L..

weixin_35865280的博客 1万+

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

题目 字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)。 暴力解法 遍历字符串,计数挨在一起的相同字符的个数,加入需要返回的字符串 class Solution(object): def compressString(self, S): """ :type S: str

qq_38290604的博客 463

【ESP32设备通信】-LoRa通信

在本文中,我们将使用 Arduino IDE 将 ESP32 与 LoRa SX1278 (Ra-02) 模块连接起来。 我们将创建一个真实的示例项目,通过 LoRa 无线打开/关闭 LED 进行演示。

视觉与物联智能 1891

数据库字段内容的压缩算法

[code="java"]package cn.ljz; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream; public cla...

坚持梦想。。。。 744

一文搞定离线环境下的RAG引擎部署

在人工智能浪潮下,技术已成为构建智能问答、文档分析和代码助手等应用的核心。然而,在许多企业场景中,出于数据安全和性能的考虑,服务器往往部署在中,并要求极致的推理效率。这给依赖外部资源的应用部署带来了巨大挑战。如何在这种严苛的环境下,完整、可靠地部署一套包含向量数据库、**高性能推理服务(vLLM)**和Python后台的复杂RAG系统呢?本文将为你提供一个,手把手教你如何使用 Docker 技术,将一套基于 Weaviate 和的 Python RAG 应用完整打包,并在离线环境中一键部署。

木鱼时刻的专栏 1242

ArcGIS Pro 3.4 二次开发 - 布局

本文介绍了在ArcGIS Pro SDK 3.4和.NET 8环境下操作布局工程项的相关方法。主要内容包括:引用布局工程项和关联布局,在新视图中打开或激活已有布局视图,引用活动布局视图,导入/移除布局工程项,创建基本布局或带参考线的自定义布局,修改布局页面尺寸,以及创建圆形图形元素等操作。重点演示了如何通过CIM(Core Infrastructure Model)进行高级布局配置,并详细说明了圆形图形元素的创建过程,包括几何构建、符号设置和图形生成。所有涉及UI线程的操作都遵循ArcGIS Pro SDK

Winemonk 795

.NET压缩解压缩字符串

压缩和解压缩代码: 1 class ZipString 2 { 3 public static string Zip(string value) 4 { 5 byte[] byteArray = new byte[value.Length]; 6 7 int index = 0; 8 9 f...

weixin_30687587的博客 512

Eclipse邂逅Deepseek:本地化部署全攻略

通过前面一系列的步骤,我们成功地在 Eclipse 中完成了 Deepseek 的本地化部署,并且对部署后的功能进行了测试和优化,还解决了可能遇到的一些常见问题。这一过程不仅让我们体验到了将强大的大语言模型与高效的开发环境相结合的魅力,也为我们在软件开发过程中带来了诸多便利。本地化部署 Deepseek 到 Eclipse,使得我们在代码编写过程中能够获得智能的代码补全和精准的问答支持,大大提高了开发效率。同时,本地化部署保障了数据的安全性和隐私性,避免了数据在传输过程中可能面临的风险。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 4522

CC150---压缩字符串

题目:利用字符重复出现的次数,编写一个方法,实现基本的字符串压缩功能。 比如,字符串"aabcccccaaa"经压缩会变成"a2b1c5a3"。若压缩后的字符串没有变短,则返回原先的字符串。 给定一个String iniString为待压缩的串(长度小于等于10000),保证串内字符均为由大小写英文字母组成,返回一个string,为所求的压缩后或为变化的串。 测试样例: "aabcccccaaa” 返回:"a2b1c5a3" import javax.sound.sampled.EnumCon

qq_61185410的博客 388

基于STM32、HAL库的ATMXT1066TD触摸屏控制器驱动程序设计

0x11) // 0x11是ATMXT1066的家族ID。// 最多支持10点触摸。// 足够存储10点触摸数据。

corlin6688的博客 164

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Python的ASKII码与字符的转换

Python的ASKII码与字符的转换 print(ord('a')) #ord:字符转ASKII码 print(chr(97)) #chr:ASKII码转字符 程序结果: 97 a

qq_45821360的博客 335

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

AC日记——行程长度编码 openjudge 1.7 32

32:行程长度编码 总时间限制:1000ms内存限制:65536kB描述 在数据压缩中,一个常用的途径是行程长度压缩。对于一个待压缩的字符串而言,我们可以依次记录每个字符及重复的次数。这种压缩,对于相邻数据重复较多的情况比较有效。 例如,如果待压缩串为"AAABBBBCBB",则压缩的结果是(A,3)(B,4)(C,1)(B,2)。当然,如果相邻字符重复情况较少,则压缩效率就较低...

weixin_34405354的博客 944

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

T1129 行程长度编码

描述 在数据压缩中,一个常用的途径是行程长度压缩。对于一个待压缩的字符串而言,我们可以依次记录每个字符及重复的次数。这种压缩,对于相邻数据重复较多的情况比较有效。 例如,如果待压缩串为"AAABBBBCBB",则压缩的结果是(A,3)(B,4)(C,1)(B,2)。当然,如果相邻字符重复情况较少,则压缩效率就较低。 现要求根据输入的字符串,得到大小写不敏感压缩后的结果(即所有小写字母均视为相应的大写字母)。 输入 一个字符串,长度大于0,且不超过1000,全部由大写或小写字母组成。输出 输出为一行,表示

qq_35526921的博客 1272

C++编程试题:计算机学科-夏令营上机考试题解(2)

作为一个编程学习者,自己多多练习刷刷题总是没错的!来试试这几个编程练习题吧

致力于C语言C++知识分享! 554

java zip 字符串_Java实现Zip压缩 从String直接变Zip

![](/api/file/getImage?fileId=5e17d5b016199b501c00168a)## 前言之前实现过一版Java的zip链接:[https://leanote.zzzmh.cn/blog/post/5cac404e16199b2e40000035](https://leanote.zzzmh.cn/blog/post/5cac404e16199b2e40000035)...

weixin_42116058的博客 2177

java String的压缩和解压缩

数据传输时,有时需要将数据压缩和解压缩,本例使用GZIPOutputStream/GZIPInputStream实现。1、使用ISO-8859-1作为中介编码,可以保证准确还原数据2、字符编码确定时,可以在uncompress方法最后一句中显式指定编码import java.io

zzycgfans的blog 8867

java采用zip方式实现String的压缩和解压缩CompressStringUtil类

CompressStringUtil类:不多说,直接贴代码: /** * 压缩 * * @param paramString * @return */ public static final byte[] compress(String paramString) throws Exception { ...

aishufan4507的博客 391

压缩字符串StringCompression

/** * @author LemonLin * @Description :StringStringCompression * @date 19.6.10-22:59 * Given an array of characters, compress it in-place. * The length after compression must always be smaller th...

happy_bigqiang的博客 365
上一篇: 第五章 字符串专题 ---------------- 5.4 实践:替换字符串中的空格
下一篇: Ubuntu“基本操作”及“实现【远程连接】前需步骤”
Estrellas_
博客等级 码龄9年 273粉丝 233原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值