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

【C++】OJ习题(初阶)

头像
🚀个人主页:奋斗的小羊
🚀所属专栏:C++
很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~

动图描述

目录

  • 💥1、字符串
    • 💥1.1 字符串相加
    • 💥1.2 验证回文字符串
    • 💥1.3 反转字符串
    • 💥1.4 字符串最后一个单词的长度
    • 💥1.5 字符串中的第一个唯一字符
    • 💥1.6 反转字符串中的单词
  • 总结


💥1、字符串

💥1.1 字符串相加

  • Leetcode——字符串相加

请添加图片描述

有时候我们需要非常大的数据相加时,整型的范围不够,就可以将数据转换为字符串的形式运算,再将结果转回为整型。
整型相加时是从后往前加的,这里的字符串相加我们也从后往前加。不断取出两个字符串的末尾字符,转换为整形后相加,再用+=追加到字符串末尾,其中还要考虑进位的情况。
因为string类支持operator[],所以我们可以通过下标的方式遍历字符串。
其中两个字符串的第一位相加也可能有进位,所以循环结束后还需要判断进位是否为1。
因为我们是从后往前加的,所以最后还需要用reverse将字符串翻转过来。

class Solution {
public:string addStrings(string num1, string num2) {string s;int n = 0;int end1 = num1.size() - 1;int end2 = num2.size() - 1;while (end1>=0 || end2>=0){int n1 = end1>=0 ? num1[end1--] - '0' : 0;int n2 = end2>=0 ? num2[end2--] - '0' : 0;int ret = n1 + n2 + n;n = ret / 10;ret %= 10;s += ret + '0';}if (n == 1){s += '1';}reverse(s.begin(), s.end());return s;}
};

用下标的方式从后往前遍历字符串,相加得到的值追加到字符串,最后再反转字符串。


💥1.2 验证回文字符串

  • Leetcode——验证回文串

在这里插入图片描述

将字符串存到一个stack和一个queue中,循环比较top(),当栈和队列为空时则字符串回文,当某次top()不相等时则不回文。
范围for遍历字符串,如果是符合我们要求的字符就插入栈和队列中。

class Solution {
public:bool isPalindrome(string s) {for (auto e : s){if (e >= 'a' && e <= 'z'){_st.push(e);_qu.push(e);}if (e >= 'A' && e <= 'Z'){e += 32;_st.push(e);_qu.push(e);}if (e >= '0' && e <= '9'){_st.push(e);_qu.push(e);}}while (!_st.empty()){if (_st.top() != _qu.front()){return false;}_st.pop();_qu.pop();}return true;}
private:stack<int> _st;queue<int> _qu;
};

💥1.3 反转字符串

  • Leetcode——反转字符串

在这里插入图片描述

只需要反转对应的区间就行,注意不能越界。

class Solution {
public:string reverseStr(string s, int k) {for (size_t i = 0; i < s.size(); i += 2*k){size_t n = i + k > s.size() ? s.size() : i + k;reverse(s.begin() + i, s.begin() + n);}return s;}
};

💥1.4 字符串最后一个单词的长度

  • 牛客——最后一个单词的长度

在这里插入图片描述

#include <iostream>
using namespace std;int main() {string s;getline(cin, s);size_t pos = s.rfind(" ");size_t length = s.size() - pos - 1;cout << length << endl;
}

💥1.5 字符串中的第一个唯一字符

  • Leetcode——字符串中的第一个唯一字符

在这里插入图片描述

这种类似计数的题可以用哈希映射的方法,首先定义一个用于计数的数组,然后将字符串映射到数组中,再通过遍历字符串得到下标间接遍历数组来找出为1的元素,返回下标。
定义数组时需要初始化为全0。

class Solution {
public:int firstUniqChar(string s) {int arr[26] = {0};for (auto e : s){arr[e - 'a']++;}for (size_t i = 0; i < s.size(); i++){if (1 == arr[s[i] - 'a']){return i;}}return -1;}
};

💥1.6 反转字符串中的单词

  • Leetcode——反转字符串中的单词

在这里插入图片描述
reverse(s.begin(), s.end());
参数:双向迭代器,指向要反转的序列的初始和最终位置。使用的范围是[ )左闭右开。
从前往后遍历字符串,找" "空格的位置,用reverse反转单词。需要注意的是reverse的参数是左闭右开的。

class Solution {
public:string reverseWords(string s) {int pos1 = 0;int pos2 = s.find(" ", pos1);while (pos2 < s.size()){reverse(s.begin() + pos1, s.begin() + pos2);pos1 = pos2 + 1;pos2 = s.find(" ", pos1);}reverse(s.begin() + pos1, s.end());return s;}
};

总结

  1. 首先要认真审题,有思路了切不可着急写,先在心中推敲一下看当前思路是否可行,有大概的把握了再着手实现
  2. 不要太钻牛角尖,如果某个思路迟迟实现不了,就把视角放广一点寻找新的思路

相关文章:

【C++】OJ习题(初阶)

&#x1f680;个人主页&#xff1a;奋斗的小羊 &#x1f680;所属专栏&#xff1a;C 很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~ 目录 &#x1f4a5;1、字符串&#x1f4a5;1.1 字符串相加&#x1f4a5;1.2 验证回文字符串&#x1f4a5;1.3 反转…...

6.4K+ Star!一个强大的本地知识库问答系统,支持多格式文件和跨语言检索,为企业提供高效、安全的数据洞察……

https://github.com/netease-youdao/QAnything 【阅读原文】跳转Github项目 转自AIGC创想者 项目简介 QAnything 是一个基于本地知识库的问答系统&#xff0c;它能够理解和回答基于任何类型文件的问题。 QAnything支持的文件格式非常广泛&#xff0c;包括PDF、Word、PPT、XL…...

mvn编译的时候出现Perhaps you are running on a JRE rather than a JDK 解决方法

目录 1. 问题所示2. 原理分析3. 解决方法1. 问题所示 mvn编译的时候出现如下问题: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.13.0:compile (default-compile) on project yudao...

React原理之Fiber详解

前置文章&#xff1a; React原理之 React 整体架构解读React原理之整体渲染流程 -----读懂这一篇需要对 React 整体架构和渲染流程有大致的概念 &#x1f60a;----- 在React原理之 React 整体架构解读中&#xff0c;简单介绍了 Fiber 架构&#xff0c;也了解了 Fiber 节点的…...

远离“优越感”陷阱,拥抱美好人生

在人生的漫长旅程中,我们不断地与他人相遇、相知、相交,在各种关系中寻找温暖、支持与成长。然而,并非所有的关系都如我们所愿,有些关系甚至可能成为我们前进道路上的阻碍。正如我们所知,唯利是图者不可交,但有一种关系比索要金钱更值得警惕,那就是找你索取满足感的关系…...

Redis的线程模型

Redis作为一种基于内存的高性能键值对数据库&#xff0c;其线程模型和IO模型是实现高性能的关键因素。以下将详细探讨Redis的线程与IO模型&#xff0c;内容不少于2000字。 一、Redis的线程模型 Redis的线程模型是理解其高性能的重要基础。在Redis的发展过程中&#xff0c;其线…...

ubuntu24.04安装nginx1.24

ubuntu安装nginx 更新包索引 sudo apt update安装nginx sudo apt install nginx确认安装成功并检查Nginx版本 nginx -v启动Nginx服务 sudo systemctl start nginx设置Nginx开机自启 sudo systemctl enable nginx在浏览器中访问 http://<your_server_IP> 来确认Nginx…...

一款好看的WordPress REST API 主题

介绍&#xff1a; 主题特色&#xff1a; 使用Nuxtjs WordPress Rest Api 实现前后端分离&#xff0c;可完成多端部署&#xff1b; 主题支持自动切换黑夜模式。 使用说明&#xff1a; service 目录为wordpress主题文件&#xff0c;需要拷贝到wordpress主题目录下&#xff0…...

《5G 与区块链融合:智能城市服务质量的飞跃》

在科技飞速发展的时代&#xff0c;5G 技术的普及正以前所未有的速度改变着我们的生活&#xff0c;而区块链技术的兴起也为各领域带来了创新的解决方案。当这两种前沿技术相互结合&#xff0c;将为智能城市的发展注入强大动力&#xff0c;显著提升服务质量&#xff0c;开创更加便…...

前后端分离开发:用 Apifox 高效管理 API

目录 1.前后台分离开发介绍 2.API 2.1 APIfox介绍 2.2 接口文档管理 1.前后台分离开发介绍 前端开发有2种方式&#xff1a;「前后台混合开发」和「前后台分离开发」。 前后台混合开发&#xff0c;顾名思义就是前台后台代码混在一起开发&#xff0c;如下图所示&#xff1a…...

Go Channel 详解

概述 在 Go 语言中&#xff0c;channel 是一种用于在 goroutine 之间传递数据的机制。它提供了同步和通信的能力&#xff0c;使得并发编程变得更加简单和安全。Channel 在 Go 语言中的设计是类型安全的&#xff0c;并且支持发送和接收两种操作。 基本概念 创建通道 创建一个…...

使用FModel提取游戏资产

使用FModel提取游戏模型 前言FModel简介FModel安装FModel使用初次使用资产预览资产导出 附录dumperDumper-7生成usmap文件向游戏中注入dll 前言 这篇文章仅记录我作为初学者使用FModel工具提取某款游戏模型的过程。 FModel简介 FModel是一个开源软件&#xff0c;可以用于查看…...

Qt C++ 屏幕录制 保存mp4

在麒麟系统&#xff08;基于 Linux&#xff09;上优化 Qt C 的屏幕录制&#xff0c;主要针对捕获效率和编码速度。可以参考以下优化策略&#xff1a; 1. 使用更高效的屏幕捕获 API 麒麟系统作为 Linux 系统的一种&#xff0c;可以考虑直接使用 X11、Wayland、或 DRM/KMS API …...

Adobe After Effects的插件--------CC Cylinder

CC Cylinder是柱体插件。它是AE内置的3D插件。 使用条件 该插件的作用是将2D图层转换为3D的柱体。所以使用该插件时要确保源图层为2D的。 我们以一张图片素材为例: 给图片图层添加CC Cylinder效果控件,然后新建一个摄像机(利用摄像机旋转、平移、推拉工具,方便在各个角度…...

Vue3项目开发——新闻发布管理系统(一)

文章目录 一、项目要实现的功能二、项目用到的技术栈三、项目创建1、pnpm安装2、创建项目3、项目启动四、项目配置1、ESLint2、Prettier3、ESLint + Prettier 进行配置代码风格3.1配置prettier3.2vue组件名称多单词组成 (忽略index.vue)3.3props解构(关闭)4、husky4.1husky…...

前端调用后端,出现跨域报错怎么办

我前端是vue&#xff0c;后端是其他同事写的python&#xff0c;因为部署在不同的机器上&#xff0c;我前端如果直接调用他的python&#xff0c;axios请求就会出现跨域报错&#xff0c;如下 blocked by CORS policy 云云 怎么办呢&#xff0c;网上探索了一下午&#xff0c;才找…...

使用Node-RED发送数据到巴法云

上一篇博文完成了Node-RED的安装&#xff0c;下面来尝试一下用Node-RED来发送数据到巴法云服务器。 我在教学用MQTT工具的思考-CSDN博客中说过&#xff0c;巴法云支持云云互联&#xff0c;可以连小米、百度&#xff0c;学生使用的兴趣高。所以今天先测试Node-RED和巴法云的连接…...

【今夕是何年】雅达利发布Atari 7800+游戏主机:配备无线手柄、HDMI接口

雅达利&#xff08;Atari&#xff09;发布了Atari 7800游戏主机&#xff0c;目前这款主机在其官方商城接受预定&#xff0c;售价129.99美元。Atari 7800游戏主机&#xff0c;作为Atari 7800系列的革新升级版本&#xff0c;搭载了高效的Rockchip 3128处理器&#xff0c;不仅确保…...

APP支付宝授权获取code uniapp

1.点击使用plus.runtime跳转打开支付宝 //打开支付宝授权&#xff0c;在支付宝APP中授权后会在支付宝中跳转到你填写的h5地址//urls是授权地址可以后端拼接也可以前端写死 //以下是一个拼接示例&#xff0c;需修改app_id的值和redirect_uri的值即可 //app_id是商户的APPID&…...

在Linux系统下安装、配置ETCD

在Linux系统下安装、配置ETCD&#xff08;一个分布式键值存储系统&#xff09;涉及多个步骤&#xff0c;包括下载、安装、配置、启动以及使用ETCD的常用命令。以下是对这些步骤的详细讲解&#xff0c;内容不少于2000字。 一、ETCD简介 ETCD是一个高可用的键值存储系统&#x…...

lambda 表达式可以传递引用为什么需要引用捕获

当 lambda 表达式被传递或存储在其他地方时&#xff0c;通过引用捕获可以确保它始终访问正确的外部变量。—— 引用捕获可以精确地控制被捕获的引用变量的作用域。如果一个 lambda 表达式被存储在一个容器中&#xff0c;并且在不同的时间点被调用&#xff0c;引用捕获可以确保它…...

【Java】/* 双向链表 - 底层实现 */

【难点】&#xff1a;remove、removeAllKey 一、IList package bagfive;/*** Created with IntelliJ IDEA.* Description:* User: tangyuxiu* Date: 2024-08-21* Time: 20:30*/ public interface IList<E> {//头插法void addFirst(E data);//尾插法void addLast(E data…...

Go 语言协程管理精解

1.基础 协程切换需要操作寄存器&#xff0c;这些操作需要通过汇编辅助实现。另外&#xff0c;每一个协程都有一个协程栈&#xff0c;实际上协程栈也是有结构的。汇编程序和栈结构这些概念可能大部分开发者都不太了解&#xff0c;在介绍协程管理之间&#xff0c;先简要介绍。 1…...

C库函数signal()信号处理

signal()是ANSI C信号处理函数&#xff0c;原型如下&#xff1a; #include <signal.h>typedef void (*sighandler_t)(int); sighandler_t signal(int signum, sighandler_t handler); signal()将信号signum的处置设置为handler&#xff0c;该handler为SIG_IGN&#xff…...

007 SpringCloudAlibaba基础使用(nacos,gateway)

文章目录 cubemall-commoncubemall-productcubemall-gateway https://nacos.io/ https://github.com/alibaba/nacos/releases/tag/1.4.1 https://github.com/alibaba/spring-cloud-alibaba https://github.com/alibaba/Nacos https://developer.aliyun.com/mvn/guide https…...

编译环境揭秘

不同平台因为偏好差异&#xff0c;编译环境的准备会有差异。对于MSVC&#xff0c;微软提供简单的VS安装界面&#xff0c;比较省心。在Ubuntu发行版&#xff0c;gcc/make等程序可能不自带&#xff0c;当需要安装这些软件时就需要不少命令。当然比较麻烦&#xff0c;提供了统一的…...

不同的字符集(ASCII、UTF-8、UTF-16/UCS-2、UTF-32/UCS-4)

来自&#xff1a;C标准库(第2版)...

STM32f407 网络接收 fpga 的 bin 文件并更新到 fpga series7(3)

STM32f407 网络接收 fpga 的 bin 文件并更新到 fpga series7(3) 简介 实验 3&#xff1a;在搭建好 tcp 服务器&#xff0c;并拟定好协议的前提下&#xff0c;接收每一个 bin 文件的块&#xff0c;配置到 fpga。 原理图 fpga fpga1 stm32 接线总结 // fpga引脚 stm32…...

JavaScript基础知识(七)

数组相关api再续前缘 arr.forEach(function) 对arr数组的每一项执行遍历操作,并且可以通过function来对相关元素进行二次操作 function: 函数,同时接收三个参数 - item: 数组中的每一项 - index: 数组每一项的下标(item的对应下标) - arr: 原数组 arr.map(function) 对数组的…...

20240821让飞凌的OK3588-C的核心板在Linux R4下挂载1TB的exFAT格式的TF卡

fdisk -l df -h df -t df -T mount 20240821让飞凌的OK3588-C的核心板在Linux R4下挂载1TB的exFAT格式的TF卡 2024/8/21 19:47 百度&#xff1a;rk3588 buildroot exFAT mount: mounting /dev/mmcblk1p1 on /mnt failed: Invalid argument Disk /dev/mmcblk1: 955 GB, 10254234…...

创意福州网站建设/搜索引擎原理

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 建筑电工(建筑特殊工种)考试题库考前必练&#xff01;安全生产模拟考试一点通每个月更新建筑电工(建筑特殊工种)考试内容题目及答案&#xff01;多做几遍&#xff0c;其实通过建筑电工(建筑特殊工种)考试平台很简单。…...

十堰网站建设/搜索引擎优化的英文

原文地址&#xff1a;Ugly Numbers 一个数的因数只有2&#xff0c;3或者5这样的质数&#xff0c;那么这个数就被称为丑数&#xff08;Ugly Numbers&#xff09;。序列1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, …就是前11个丑数。为了方便&#xff0c;把1也包括进来了。 写一个程…...

河间哪里有做网站的/广州最新疫情通报

1 问题 给定一个二叉树&#xff0c;判断它是否是高度平衡的二叉树。 本题中&#xff0c;一棵高度平衡二叉树定义为&#xff1a;一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。 示例 1: 给定二叉树 [3,9,20,null,null,15,7] 返回 true 。 示例 2: 给定二叉树…...

wordpress 时区问题/房地产销售怎么找客户

Maven引入的传递性依赖机制&#xff0c;一方面大大简化和方便了依赖声明&#xff0c;另一方面&#xff0c;大部分情况下我们只需要关心项目的直接依赖是什么&#xff0c;而不用考虑这些直接依赖会引入什么传递性依赖。但有时候&#xff0c;当传递性依赖造成问题的时候&#xff…...

零食网站策划书/推广优化

explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。使用方法&#xff0c;在select语句前加上explain就可以了&#xff0c;如&#xff1a;explain select * from statuses_status where id11;explain列的解释table&…...

山东专业的制作网站/在哪里找软件开发公司

这篇文章主要介绍了PHP读取XML格式文件的方法,结合实例形式总结分析了php针对xml格式文件的读取、解析、加载、遍历等操作技巧,需要的朋友可以参考下具体如下&#xff1a;books.xml文件&#xff1a;Jack HerringtonPHP HacksOReillyJack HerringtonPodcasting HacksOReilly1.DO…...