【C语言】字符串练习,压缩字符串,提取奇偶位(每日小细节015)

news2024/11/26 20:27:21

前言:

欢迎打开这篇博客,从今天开始,每天和大家分享一个C语言小细节,不久之后还会追加C++

一些常常被忽视的小细节和思想统一的编程题目是这个专栏的核心哦

虽然简单但千万别在细节处失分!!!!

每日花一两分钟浏览一下加深一个知识点不香吗

感兴趣的赶紧收藏关注起来吧,不要迷路

1.字符串压缩(写到吐血...........)

力扣传送 

 心路历程:

最开始写,觉得这不就是之前那种对应字符去相同坐标,然后++的金典题目

然后发现,不是把所有相同字母计数,没看清题目....

然后,啊!双指针,我又行了~一个指针遍历S,一个遍历目标数组ans

结果死活过不了,就说是栈溢出.............

我明明加上了'\0' 为什么为什么为什么

哦,看了一眼题解和别人的答案,字符个数超过10需要压缩.....

int jia(char * s, int j ,int num)
{
    if(num < 10)
    {
        //*(s + j) = num+'0';
        //j++;
        s[j++] = num+'0';
        return j;
    }
    j = jia( s , j ,num/10);
    //*(s + j) = num%10+'0';
    //j++;
    s[j++] = num%10+'0';
    return j;
}


char* compressString(char* S){
char *ans=malloc(sizeof(char )* strlen(S)*2);
int len =strlen(S);
if(len <= 2)
        return S;
char ch=S[0];
int cnt=1;
int j=1;
ans[0]=S[0];
for(int i=1;i<len;i++)
{
    if(ch==S[i])
    {
        cnt++;
    }
   else
   {
       j=jia(ans,j,cnt);
        ans[j++]=S[i];// 注意 cnt 要转为字符串
         ch = S[i];
         cnt = 1;
   }
}
j=jia(ans,j,cnt);
ans[j]='\0';
return strlen(ans)<len?ans:S;
}

2.配对交换

力扣传送

 可以发现,想要提取一个二进制的奇数位,只需要&0101 0101 0101 0101 0101 0101 0101 0101

这一串就是0x5555 5555

想要提取偶数位,&1010 1010 1010 1010 1010 1010 1010 1010 

这一串是0x aaaa aaaa

提取奇数位之后<<1,提取偶数位之后>>1,然后|就可以得到结果(别问我怎么想出来的,见过一次之后就会了,我也是之前看过别人的方法)

int exchangeBits(int num){

return (num & 0x55555555)<<1 | (num & 0xaaaaaaaa) >>1;

}

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

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

相关文章

《高效能人士的七个习惯》

专注做有意义的事情。《高效能人士的七个习惯》作者史蒂芬科维&#xff0c;这是一本难得的好书&#xff0c;如果你没有的读过&#xff0c;我推荐你一定要读一下。最近在豆瓣看到一句话说&#xff1a;一定要读经典书籍&#xff0c;因为我们在生活中很难遇到伟大的人物&#xff0…

V2V网络灵敏度分析(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 灵敏度分析是研究与分析一个系统&#xff08;或模型&#xff09;的状态或输出变化对系统参数或周围条件变化的敏感程度的方法。…

Axure绘制登录功能

上一篇文章为大家介绍了一下登录功能的设计思路和相关的流程图&#xff0c;本篇主要带大家从0到1绘制一下B端产品的登录功能如何实现 一、功能解析 本篇主要是针对内部员工使用的B端产品&#xff0c;主要功能如下&#xff1a; ①手机号密码登录 ②忘记密码 ③记住密码 第…

从0到1完成一个Vue后台管理项目(二、使用element-ui)

从0到1完成一个Vue后台管理项目&#xff08;一、创建项目&#xff09; 1.全局引入 下载element-ui cnpm i element-ui -S main.js里引入 这里需要注意的是&#xff0c;我们引入的顺序不能错&#xff0c;一定要按照我这个箭头的顺序来 使用 然后我们按照文档正常使用即可 elem…

Go第 8 章:排序和查找

Go第 8 章&#xff1a;排序和查找 8.1 排序的基本介绍 8.2 冒泡排序的思路分析 8.3 冒泡排序实现 8.4 课后练习 要求同学们能够&#xff0c;不看老师的代码&#xff0c;可以默写冒泡排序法(笔试题) 8.5 查找 2) 请对一个有序数组进行二分查找 {1,8, 10, 89, 1000, 1234} &am…

C语言之复合类型下卷(十九)(自然法则)(2023)

上一篇: C语言之复合类型上卷&#xff08;十八&#xff09;&#xff08;阴阳两极&#xff09; 逐梦编程&#xff0c;让中华屹立世界之巅。 简单的事情重复做,重复的事情用心做,用心的事情坚持做&#xff1b; 文章目录前言一、结构体指针二、结构体嵌套指针三、const修饰的结构…

qsort函数详解以及模拟实现

qsort函数详解以及模拟实现一.qsort函数是什么二.具体的使用1.参数4&#xff08;参数3在模拟实现时解释&#xff09;2.例子1.排序整形2.排序结构体三.模拟实现qsort1.参数32.模拟排序1.排整形2.排结构体一.qsort函数是什么 qsort全称为quick_sort&#xff08;快速排序&#xff…

Tomcat的基本使用

1, Tomcat 1.1 简介 1.1.1 什么是Web服务器 Web服务器是一个应用程序&#xff08;软件&#xff09;&#xff0c;对HTTP协议的操作进行封装&#xff0c;使得程序员不必直接对协议进行操作&#xff0c;让Web开发更加便捷。主要功能是"提供网上信息浏览服务"。 Web服…

C语言rewind()函数:将文件指针重新指向文件开头

rewind()函数用于将文件指针重新指向文件的开头&#xff0c;同时清除和文件流相关的错误和eof标记&#xff0c;相当于调用fseek(stream, 0, SEEK_SET)&#xff0c;其原型如下&#xff1a; void rewind(FILE * stream); 【参数】stream为已打开文件的指针。 注意&#xff1a;准…

深入理解Pytorch中的分布式训练

作者&#xff1a;台运鹏 (正在寻找internship...)主页&#xff1a;https://yunpengtai.top鉴于网上此类教程有不少模糊不清&#xff0c;对原理不得其法&#xff0c;代码也难跑通&#xff0c;故而花了几天细究了一下相关原理和实现&#xff0c;欢迎批评指正&#xff01;关于此部…

【Python • 字符串】巧用python字符串切片

文章目录前言字符串切片常用用法理解一个字符串逆向下标的字符串字符串切片截取下标a到b的字符串取下标a以后的所有字符串取下标a以前的所有字符串间隔n个字符取字符串字符串逆序输出从下标a的字符开始逆序取字符串逆序输出从b到a的字符串逆序间隔一个字符串输出总结前言 在py…

站酷基于服务网格ASM的生产实践

作者&#xff1a;服务网格ASM 背景介绍 站酷&#xff08;ZCOOL&#xff09;2006 年 8 月创立于北京&#xff0c;深耕设计领域多年&#xff0c;聚集了 1500 万设计师、摄影师、插画师、艺术家、创意人&#xff0c;在设计创意群体中具有一定的影响力与号召力。站酷在创立之初&am…

企业数字化转型“核心方法论”

一、什么是数字化转型&#xff1f;数字化转型是近年来&#xff0c;很多企业老生常谈的话题。那么听了这么多数字化转型的故事&#xff0c;你对其真正了解多少呢&#xff1f;下面织信就数字化转型的背景、以及多个示例的讲解&#xff0c;带你深入理解“数字化转型”这一概念。&a…

构建自组织团队,让敏捷管理更好地落地

敏捷开发是以用户的需求为核心&#xff0c;通过不断迭代、小步快跑、循序渐进的方法进行软件产品的研发&#xff0c;在迭代研发过程中的产品都需要经过测试&#xff0c;具备可视化、可集成和可运行使用的特征。 在团队方面&#xff0c;敏捷开发倡导团队协作&#xff0c;强调个…

React(coderwhy)- 05(redux)

Redux的核心思想 理解JavaScript纯函数 ◼ 函数式编程中有一个非常重要的概念叫纯函数&#xff0c;JavaScript符合函数式编程的范式&#xff0c;所以也有纯函数的概念&#xff1b;  在react开发中纯函数是被多次提及的&#xff1b;  比如react中组件就被要求像是一个纯函数…

数据库迁移到达梦的一些记录

1 达梦迁移工具 参考MySQL迁移到达梦-超出定义长度问题 使用你设置的配置&#xff0c;即可&#xff0c;因为达梦默认采用按照字节存储&#xff0c;mysql是按照字符存储&#xff0c;故而他认为越界了。 使用3.5G数据&#xff0c;342张表进行数据迁移验证 第一此执行,结果 任务…

linux安装mysql以及允许外网访问mysql

下载社区版本 下载最新版 下载历史版本 点击 Archives 文件上传云服务器 /opt/mysql 存放目录随便 添加用户组 groupadd mysql useradd -r -g mysql mysql删除mariadb rpm -qa|grep mariadbrpm -e --nodeps mariadb-libs安装 解压tar -xvf mysql-5.7.20-1.el7.x86_64…

中国企业邮箱安全性研究报告

声明 本文是学习中国企业邮箱安全性研究报告. 下载地址 http://github5.com/view/55003而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 奇安信网神邮件威胁检测系统 奇安信网神邮件威胁检测系统是奇安信集团面向政府、企业、金融、军队等大型企事业单…

javaEE初阶 — 阻塞队列

文章目录阻塞队列1. 概念与特性2. 生产者与消费者模型2.1 生产者消费者模型的两个好处&#xff08;主要的&#xff09;3. 标准库中的阻塞队列3.1 代码实现生产者消费者模型4. 阻塞队列实现4.1 普通队列实现4.2 给队列追加阻塞功能阻塞队列 1. 概念与特性 阻塞队列 是一种特殊的…

Centos 安装Datax及Datax-web

异构数据的采集&#xff0c;方案还是比较多样&#xff0c;除了基于大数据平台的一些集成&#xff1b;简单的数据源&#xff0c;可以直接使用阿里开源的datax来实现&#xff1b;datax-web则是datax界面化操作的开源框架&#xff0c;集成了datax异构数据采集和任务调度的功能。关…