当前位置: 首页 > news >正文

菜鸟刷题Day3

⭐作者:别动我的饭
⭐专栏:菜鸟刷题
⭐标语:悟已往之不谏,知来者之可追
在这里插入图片描述

一.字符串压缩:面试题 01.06. 字符串压缩 - 力扣(LeetCode)

描述

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


解题思路

遍历字符串,统计字符的个数就行,但是将数字转成字符串会有些麻烦,其实给每一位数字加上’\0’就可以得到相应的数字字符。可以考虑这个办法。

int itoa(char*str,int num)
{//简单的一个数字转字符串函数,将转换后的数字字符串放到str空间中char tmp[16]={0};int count=0;while(num){tmp[count++]=(num%10)+'0';//将个位数字转换为对应数字字符放到tmp空间中(逆序的)num/=10;}for(int i=0;i<count;i++){str[i]=tmp[count-i-1];//逆序将数字字符放入传入的str空间中}
return count;//返回转换的数字字符串长度
}
char*compressString(char*S)
{int len=strlen(S);//申请新的空间,注意空间有可能所需会变大,比如abc->a1b1c1char*newstr=(char*)calloc(len,3);int pos=0;char*s=S;while(*s!='\0'){char*n=s+1;while(*n!='\0'&&*n==*s)n++;//走到下一个不同字符处停下int l=n-s;//相同字符的长度newstr[pos++]=*s;//先赋值对应字符pos+=itoa(newstr+pos,l);//编写了一个数字转字符函数,将数字放到字符串空间指定位置s=n;//下一个不同的字符处}return strlen(newstr)>=len?S:newstr;
}

但是作为一个手搓过string的博主,这种题目不来占个string的便宜说的过去吗?

首先介绍一个库函数:to_string这是一个将数字转为数字字符的库函数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NR29I3cA-1679378671546)(C:\Users\羽北冥\AppData\Roaming\Typora\typora-user-images\image-20230321132933270.png)]

在统计字符的时候,如果下一个字符和当前字符不一致或者说已经到结尾了的时候,该字符也就结束了。

class Solution {
public:string compressString(string S) {string ans="";int cnt=0;int len=S.size();//string有效字符用sizefor(int i=0;i<len;i++){cnt++;if(i==len-1||S[i]!=S[i+1])//到结尾或者下一个字符和该字符不相同就结束了{ans+=S[i]+to_string(cnt);cnt=0;//从头开始计数}}return ans.size()<len?ans:S;}
};

二.配对交换:面试题 05.07. 配对交换 - 力扣(LeetCode)

描述

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


解题思路

这没什么骚操作,就当老实人呗。通过按位与分别拿到一个数的奇数位和偶数位,再将奇数位左移一位+偶数位右移一位,就可以达到最后的结果。

int exchangeBits(int num){int odd=0b10101010101010101010101010101010;//二进制int jdd=0b01010101010101010101010101010101;odd&=num;jdd&=num;int ret=(odd>>1)+(jdd<<1);return ret;}

三.递归乘法:面试题 08.05. 递归乘法 - 力扣(LeetCode)

描述

递归乘法。 写一个递归函数,不使用 * 运算符, 实现两个正整数的相乘。可以使用加号、减号、位移,但要吝啬一些。


解题思路

a*b也就是a个b相加的结果,所以只要递归调用加法就行了。如果有一个数为0,那就直接返回0,有1就直接返回那个数本身。没有这些特殊数,那就只好递归调用咯。递归要有限制条件,这题的限制条件是,我们只需要调用a/b次递归。

int multiply(int A, int B){if(B==0)return 0;if(B==1)return A;return A+multiply(A,B-1);}

四.挑7:挑7_牛客题霸_牛客网 (nowcoder.com)

描述

输出 1到n之间 的与 7 有关数字的个数。

一个数与7有关是指这个数是 7 的倍数,或者是包含 7 的数字(如 17 ,27 ,37 … 70 ,71 ,72 ,73…)


解题思路

这个题目要注意的地方在于,存在那种既是七的倍数又包含七的数字,所以判断的时候用||对这两个条件一起判断会比较好,否则还要做额外处理。将这个数与七取模结果为零就表明这个数是七的倍数,至于包含七就只需要不断除十模十即可。

#include <stdio.h>int main() 
{int n=0;int count=0;while(scanf("%d",&n)!=EOF){for(int i=7;i<=n;i++)//直接从7开始,因为之前不可能有包含7或者7的倍数{int tmp=i;while(tmp>0){if(tmp%10==7)break;tmp/=10;}if(i%7==0||tmp%10==7){count++;}}printf("%d",count);}return 0;
}

人们总是高估短期努力带来的提升,而小看长期坚持带来的提升。今天是刷题第三天了,你还在坚持吗?

相关文章:

菜鸟刷题Day3

⭐作者&#xff1a;别动我的饭 ⭐专栏&#xff1a;菜鸟刷题 ⭐标语&#xff1a;悟已往之不谏&#xff0c;知来者之可追 一.字符串压缩&#xff1a;面试题 01.06. 字符串压缩 - 力扣&#xff08;LeetCode&#xff09; 描述 字符串压缩。利用字符重复出现的次数&#xff0c;编…...

南京邮电大学数据库第三次课后作业

1.单选(2分) 下列关于模式的术语中,(C)不是指数据库三级模式结构中的外模式 &#xff08;A&#xff09;子模式 &#xff08;B&#xff09;用户模式 &#xff08;C&#xff09;存储模式 &#xff08;D&#xff09;用户视图 2单选题(2分) 数据库的三级模式结构中,描述数据全局逻辑…...

【vue2】使用vue常见的业务流程与实现思路

&#x1f973;博 主&#xff1a;初映CY的前说(前端领域) &#x1f31e;个人信条&#xff1a;想要变成得到&#xff0c;中间还有做到&#xff01; &#x1f918;本文核心&#xff1a;vue的业务处理思路。前台数据渲染与后台的增删改查操作 【前言】当大家会点开这一篇文章…...

Linux操作系统ARM体系结构处理器机制原理与实现

ARM 的概念ARM(Advanced RISC Machine)&#xff0c;既可以认为是一个公司的名字&#xff0c;也可以认为是对一类微处理器的通称&#xff0c;还可以认为是一种技术的名字。ARM 公司并不生产芯片也不销售芯片&#xff0c;它只出售芯片技术授权。其合作公司针对不同需求搭配各类硬…...

Mongodb 常用基本语法与操作

常用操作 1、 Help查看命令提示 db.help(); 2、 切换/创建数据库 use test 如果数据库不存在&#xff0c;则创建数据库&#xff0c;否则切换到指定数据库 3、 查询所有数据库 show dbs; 4、 删除当前使用数据库 db.dropDatabase(); 5、 查看当前使用的数据库 db.getName(); 6、…...

MySQL注入秘籍【绕过篇】

MySQL注入秘籍【绕过篇】1.通用方法2.绕过空格3.绕过引号4.绕过逗号,5.绕过等号6.绕过and/or7.绕过注释符8.绕过函数检测1.通用方法 编码 编码无非就是hex、url等等编码&#xff0c;让传到数据库的数据能够解析的即可&#xff0c;比如URL编码一般在传给业务的时候就会自动解码…...

TCP三次握手/四次挥手

TCP三次握手 任何基于TCP的应用&#xff0c;在发送数据之前&#xff0c;都需要由TCP进行“三次握手”建立连接示意图 第一次握手&#xff1a;客户端PC发送一个SYN位置1&#xff08;SYN1代表请求服务端建立连接&#xff09;的TCP报文发送给要建立TCP连接的Server&#xff0c;此…...

Python程序员看见一个好看的手机壁纸网站,开撸!

人生苦短&#xff0c;我用python 最近好像没什么大事&#xff0c; .那就采集一下小——姐——姐————看下吧~ python 安装包资料:点击此处跳转文末名片获取 最近有同学的爬虫代码出了bug&#xff0c;给问我怎么改 于是就发现了这个好看的手机壁纸网站。 这个图片应该是违规…...

浏览器工作原理

一、JavaScript 的历史 JavaScript&#xff08;简称JS&#xff09;Web前端开发的脚本语言。 它诞生1995年&#xff0c;由网景公司的 Brendan Eich 开发。最初&#xff0c;JavaScript 被设计用于在网页上嵌入动态内容和交互式功能。 1996年&#xff0c;JavaScript 1.1 成为国…...

对在使用容器HashSet存放自定义对象时重写其类的hashcode和equals方法的几点认识

判断是否是相同对象时&#xff0c;hashcode和equals方法的调用顺序 先调用hashcode()方法&#xff0c;再调用equals()方法如果hashcode()方法得到的哈希值不同&#xff0c;那么两个对象一定不相同&#xff0c;不作后续判断如果hashcode()方法得到的哈希值相同&#xff0c;那么…...

Java集群:单体架构升级到集群架构(二)实现session共享

默认情况下&#xff0c;session是保存在TOMCAT服务器内存中的&#xff0c;如果我们有两个TOMCAT&#xff0c;它们的session是没有共享的。我们这回要做的就是把session保存在redis中&#xff0c;这样两个TOMCAT就可以共享session了。其实这货的详细原理还是很复杂的&#xff0c…...

MySQL索引及索引失效的分析(MySQL8.0.19)

目录索引数据结构主键索引非主键索引索引在什么时候是有效的&#xff1f;字符串比较大小btween and索引数据结构 主键索引 我们先来看看索引的数据结构&#xff0c;以及我们是如何利用索引来搜索数据的。MySQL的数据存储结构是B树&#xff0c;在叶子节点存储了数据行&#xff…...

第一个 Django 应用

1. 创建项目 1.1 新建项目 首先新建一个项目&#xff0c;名为 mysite&#xff0c;命令如下&#xff1a; django-admin startproject mysite # 或用 django-admin.py运行成功&#xff0c;生成一些目录&#xff1a; mysite/manage.py # 管理 Django 项目的命令行工具mysit…...

001-ksum 求符合条件的 k 个数 1. Two Sum/15. 3Sum/18. 4Sum/

推荐阅读 000-从零开始的数据结构与算法 001-01-ksum 求符合条件的 k 个数 1. Two Sum/15. 3Sum/18. 4Sum/ 002-两数相加 add two numbers 003-无重复字符的最长子串 Longest Substring Without Repeating Characters 004-寻找两个正序数组的中位数 005-最长回文子串 Lon…...

Nginx学习笔记(三)Linux环境下Nginx的安装和部署

目录一、官网下载二、配置基本信息1.上传 Linux2.解压3.安装编译环境4.配置基本信息4.1 配置失败原因(1)&#xff1a;没有安装C编译环境4.2 配置失败原因(2)&#xff1a;没有安装 PCRE 依赖4.3 配置失败原因(3)&#xff1a;没有安装 zlib 依赖5.查看文件列表三、编译安装四、配…...

【十二天学java】day05--数组和循环高级

**# 1.数组 概念&#xff1a; 指的是一种容器&#xff0c;可以同来存储同种数据类型的多个值。 但是数组容器在存储数据的时候&#xff0c;需要结合隐式转换考虑。 比如&#xff1a; 定义了一个int类型的数组。那么boolean。double类型的数据是不能存到这个数组中的&#…...

用队列实现栈和用栈实现队列(C 语言)

目录 一、用队列实现栈 二、 用栈实现队列 一、用队列实现栈 请你仅使用两个队列实现一个后入先出&#xff08;LIFO&#xff09;的栈&#xff0c;并支持普通栈的全部四种操作&#xff08;push、top、pop 和 empty&#xff09;。 实现 MyStack 类&#xff1a; void push(int…...

albedo开源框架配置多数据源

前言&#xff1a;公司框架项目一直都没认真阅读过&#xff0c;最近项目需要连接oracle数据&#xff0c;所以尝试使用框架连接多数据库。添加多数据源插件&#xff1a;我们在项目的插件模块内添加多数据源插件&#xff1a;albedo-dynamic-datasource<?xml version"1.0&…...

22张图带你了解IP地址有什么作用

了解IP地址 1、IP地址的格式 在IP协议的报文中&#xff0c;可以得知IP地址是有32个比特&#xff0c;IP地址在计算机中是以二进制的方式处理的&#xff0c;如果全部以二进制的形式来表示&#xff0c;使用跟表达都非常的困难&#xff0c;所以为了人类方便记忆&#xff0c;采用了…...

121.Android 简单的人工智能聊天项目,chatAi,AI聊天项目,GPTAi

//首页xml布局代码&#xff1a; <?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"mat…...

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”&#xff0c;无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息&#xff1a; 关注测试号&#xff1a;扫二维码关注测试号。 发送模版消息&#xff1a; import requests da…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码&#xff0c;写上注释 当然可以&#xff01;这段代码是 Qt …...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1)&#xff1a;从基础到实战的深度解析-CSDN博客&#xff0c;但实际面试中&#xff0c;企业更关注候选人对复杂场景的应对能力&#xff08;如多设备并发扫描、低功耗与高发现率的平衡&#xff09;和前沿技术的…...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 &#xff08;一&#xff09;多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如&#xff0c;当用户上传一张“蓝色连衣裙”的图片时&#xff0c;接口可自动提取图像中的颜色&#xff08;RGB值&…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN&#xff0c;根据VPN原理&#xff0c;打通两个内网必然需要借助一个公共中继节点&#xff0c;ktconnect工具巧妙的利用k8s原生的portforward能力&#xff0c;简化了建立连接的过程&#xff0c;apiserver间接起到了中继节…...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O(n) 时间复杂度…...