【Leetcode】面试题 01.06. 字符串压缩、面试题 05.07. 配对交换

news2024/12/23 5:42:16

 作者:一个喜欢猫咪的的程序员

专栏:《Leetcode》

喜欢的话:世间因为少年的挺身而出,而更加瑰丽。                                  ——《人民日报》


目录

面试题 01.06. 字符串压缩: 

 面试题 05.07. 配对交换


面试题 01.06. 字符串压缩: 

面试题 01.06. 字符串压缩https://leetcode.cn/problems/compress-string-lcci/ 题目描述:

字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)。

示例:


 思路:

开辟一个数组tmp(大小为S的大小x2+1),每次先将字符先存进去,计算每个字符的个数,然后存进去,个数存进去的细节可以注意看看注释,注释较为详细。

代码:

char* compressString(char* S) {
    char* tmp = (char*)malloc(sizeof(char) * (2 * strlen(S) + 1));
    int cur = 0;//用来遍历S的下标
    int n = 0;//用来赋值tmp和S的下标
    while (cur < strlen(S))
    {
        int num = 1;
        tmp[n++] = S[cur];
        int i = cur;//算每个字符的个数
        while (i < strlen(S))
        {
            if (tmp[n - 1] != S[i + 1])
            {
                break;
            }
            i++;
            num++;
        }
        char s = '0';
        if (num > 9)
        {//放在num>9,求余
            int a = 0;
            while (num > pow(10, a))
                a++;//4934,a=4
            if (num % (int)pow(10, a - 1) == 0)
                a--;
            if (num < pow(10, a))
                a--;
            int m = num;
            while (m > 0)
            {
                if (m / (int)pow(10, a) > 9)//防止除完这个数大于9
                    tmp[n++] = s + (m / pow(10, a) - 9);
                else 
                tmp[n++] = s + (m / pow(10, a));
                m = m % (int)pow(10, a--);
            }
            if(num % 10==0)
            tmp[n++] = s + (num % 10);
        }
        else
            tmp[n++] = s + num;
        cur += num;
    }
    tmp[n] = '\0';
    if (strlen(S) <= strlen(tmp))
        return S;
    return tmp;
}

 面试题 05.07. 配对交换

面试题 05.07. 配对交换https://leetcode.cn/problems/exchange-lcci/

题目描述:

配对交换。编写程序,交换某个整数的奇数位和偶数位,尽量使用较少的指令(也就是说,位0与位1交换,位2与位3交换,以此类推)。

示例:

 代码:

int exchangeBits(int num){
        int a2=0x55555555;
        int a1=0x2aaaaaaa;
        a1=num&a1;//保留奇数位,偶数位一定为0
        a2=num&a2;//保留偶数位,奇数位一定为0
        a2=a2<<1;//偶数变奇数.
        a1=a1>>1;//奇数位边偶数
        return a1|a2;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/190408.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【贪心数学困难题】1739. 放置盒子

⭐️前面的话⭐️ 本篇文章介绍【贪心数学困难题】1739. 放置盒子题解&#xff0c;展示语言java。 &#x1f4d2;博客主页&#xff1a;未见花闻的博客主页 &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f4cc;本文由未见花闻原创&am…

20份可视化大屏模板,直接套用真香(文末附源码)

最近有不少小伙伴问我&#xff1a;有没有数据可视化大屏模板&#xff0c;而且要B格很高的。 这不&#xff0c;立马安排。特地给大家准备了20张精美、炫酷而且十分实用的可视化大屏模板&#xff0c;涉及机械、加工、零售、银行、交通等行业。 只要你有数据就能够迅速套用到模板…

Spring-IOC/DI配置管理第三方bean

Spring-IOC/DI配置管理第三方bean 1&#xff0c;IOC/DI配置管理第三方bean 1.1 案例:数据源对象管理 本次案例将使用咱们前面提到过的数据源Druid(德鲁伊)和C3P0来配置学习下。 1.1.1 环境准备 学习之前&#xff0c;先来准备下案例环境: 创建一个Maven项目 pom.xml添加依…

代码随想录day52 动态规划

代码随想录day52 动态规划 题1143.最长公共子序列 1&#xff0c;本题和最长重复子数组的区别在于本题不要求连续&#xff0c;那么当遇到元素不相同时不能重头开始累计&#xff0c;而应该取前面情况中的最大值。 2&#xff0c;dp数组依然为dp[i][j]&#xff1a;长度为[0, i -…

提取页码去重再编号

实例需求&#xff1a;A列为档号数据&#xff0c;由多段数字组成&#xff0c;使用减号作为分隔符&#xff0c;最后一段数字代表页数&#xff0c;注意页数是不连续的&#xff0c;倒数第二段数字是代表档案中的第几本&#xff0c;每个档案都是从1开始。现在需要在B列创建“卷内顺序…

A股level2行情数据接口可以获取可转债数据吗?

可以的&#xff0c;究竟如何通过level2行情获取可转债数据&#xff1f; level2行情数据接口数据包括每只股票每3秒的快照数据&#xff0c;每10秒的快照数据毫秒级差别推送数据&#xff0c;收集多个逐笔成交数据和逐笔委托数据。 通过数据提供商获取即时收集数据和盘后数据。数…

七、请求和响应

请求和响应 web框架本质就是处理用户发起的请求&#xff0c;然后返回响应结果。请求&#xff0c;和响应就是框架中的数据流。 请求 当页面被请求时&#xff0c;django会创建一个HttpRequest对象&#xff0c;该对象包含关于请求的元数据。然后django加载适当的视图&#xff0…

[NOI Online 2021 入门组] 切蛋糕

题目描述: Alice、Bob 和 Cindy 三个好朋友得到了一个圆形蛋糕&#xff0c;他们打算分享这个蛋糕。 三个人的需求量分别为 a,b,c现在请你帮他们切蛋糕&#xff0c;规则如下&#xff1a; 每次切蛋糕可以选择蛋糕的任意一条直径&#xff0c;并沿这条直径切一刀&#xff08;注意…

【C++】模板进阶:非类型的模板参数与模板的特化

一、非类型模板参数 模板参数分类&#xff1a;类型形参与非类型形参。 类型形参&#xff1a;出现在模板参数列表中&#xff0c;跟在class或者typename之后的参数类型名称。 非类型形参&#xff0c;就是用一个常量作为类(函数)模板的一个参数&#xff0c;在类(函数)模板中可将…

GMP调度模型

GMP的发展: go 1.1版本之前时候过使用的是GM模型全局队列的模式。GM模型全局队列的模式M&#xff1a;1 内核线程&#xff1a;协程新建一个协程G的时候会放入全局队列中&#xff0c;每次执行一个协程G的时候&#xff0c;内核线程M会从全局队列中获取一个协程G执行,因为内核线程…

Dataset and DataLoader 加载数据集

文章目录7、Dataset and DataLoader 加载数据集7.1 Revision7.1.1 Manual data feed 手动数据输入7.1.2 Epoch, Batch-Size, Iterations7.2 DataLoader 数据加载器7.3 Dataset 数据集7.3.1 import7.3.2 class7.3.3 DataLoader7.4 Example: Diabetes Dataset7.4.1 Prepare datas…

【微服务】Seata的部署和集成

Seata的部署和集成一、部署Seata的tc-server1.下载2.解压3.修改配置4.在nacos添加配置5.创建数据库表6.启动TC服务二、微服务集成seata1.引入依赖2.修改配置文件三、TC服务的高可用和异地容灾1.模拟异地容灾的TC集群2.将事务组映射配置到nacos3.微服务读取nacos配置一、部署Sea…

【Redis】.net core 3.1 Redis安装和简单使用

Redis&#xff08;Remote Dictionary Server )&#xff0c;即远程字典服务&#xff0c;是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库&#xff0c;并提供多种语言的API。 简单来说&#xff0c;就是一个键值对数据库。 Redis支持的…

DynaSLAM-5 DynaSLAM中Mask R-CNN部分源码解析(Ⅳ)

目录 1.ROIAlign层 2.Mask分支 3.整体框架回顾 1.ROIAlign层 在上文中&#xff0c;我们现在手里已经有了正负样本数据以及它们对应的标签。接下来我们就要进行预测的操作了&#xff01; 但在预测之前&#xff0c;还有些小问题&#xff1a; ①每个ROI大小也不一样&#xff0c…

Biotin-SS-Sulfo-NHS;CAS:325143-98-4;生物素-二硫键-磺酸-活性酯

名称&#xff1a;生物素-二硫键-磺酸-活性酯 英文名称&#xff1a;Biotin-SS-Sulfo-NHS CAS:325143-98-4 分子式&#xff1a;C19H27N4NaO9S4 分子量&#xff1a;606.67 外观&#xff1a;白色固体或粘稠液体&#xff0c;取决于分子量大小 溶剂&#xff1a;溶于大部分有机溶…

JVM自动内存管理核心知识速览

目录运行时数据区程序计数器Java虚拟机栈本地方法栈Java堆方法区运行时常量池直接内存对象对象的创建类加载检查分配内存指针碰撞&#xff08;Bump The Pointer&#xff09;空闲列表&#xff08;Free List&#xff09;内存分配并发问题初始化值设置对象头执行init方法对象的内存…

一、Qt汽车仪表盘之绘制背景-绘制饼图

一、绘图坐标系分析 1、坐标系平移 1、从原来的坐标系中心移动到矩形仪表盘中心&#xff0c;相对应的坐标会发生变化。 2、了解绘制饼图的含义 &#xff08;1&#xff09;坐标系平移之后坐标变化 &#xff08;2&#xff09;绘制第一个饼图效果 第一个饼图&#xff1a;坐标…

[COMST 2022] 元宇宙的安全隐私问题

A Survey on Metaverse: Fundamentals, Security, and Privacyhttps://ieeexplore.ieee.org/abstract/document/9880528摘要元宇宙&#xff0c;作为下一代互联网的一个不断发展的范式&#xff0c;旨在建立一个完全沉浸式、超时空、自我维持的虚拟共享空间&#xff0c;供人类玩耍…

进销存ERP源码/ 进销存APP源码/小程序ERP系统/Thinkphp+Uniapp全开源销售进库出入库

框架&#xff1a;ThinkPHP5.0.24 uniapp 包含:服务端php全套开源源码&#xff0c;uniapp前端全套开源源码&#xff08;可发布H5/android/iod/微信小程序/抖音小程序/支付宝/百度小程序&#xff09; 注&#xff1a;这个是全开源&#xff0c;随便你怎么开&#xff0c;怎么来&…

JUC并发编程之SynchronousQueue的底层原理

作者简介&#xff1a;专注于研究Linux内核、Hotspot虚拟机、汇编语言、JDK源码、各大中间件源码等等喜欢的话&#xff0c;可以三连关注~SynchronousQueue是什么在JDK源码中JUC包下的并发编程阻塞/同步队列实现各种花样&#xff0c;但是队列的实现无非是。先进先出&#xff0c;后…