C++ 习题精选(1)

这里写目录标题

  • 1. 字符串相加
  • 2. 字符串中的第一个唯一字符

1. 字符串相加

题目描述:给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回。你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换为整数形式。

示例 1:
输入:num1 = “11”, num2 = “123”
输出:“134”
示例 2:
输入:num1 = “456”, num2 = “77”
输出:“533”
示例 3:
输入:num1 = “0”, num2 = “0”
输出:“0”

提示:
1 <= num1.length, num2.length <= 104
num1 和num2 都只包含数字 0-9
num1 和num2 都不包含任何前导零

题目链接: https://leetcode.cn/problems/add-strings/submissions/536307291?clienttype=8&version=7.40.0.113&from=win32_yunguanjia&channel=00000000000000000000000040000001&privilege=&pri_extra=

解题思路:
我们想象一下,如果是两个数相加,怎么计算?从个位开始,每位相加,逢十进一。那么字符串也可以按照这样来进行计算,字符也是整形,在ASCII码中数字字符是连续的,所以减去字符零(‘0’)就是对应的数字。下述代码通过两个下标(i和j)分别指向两个字符串的末尾位,然后add变量存储进位值,通过条件运算符来判断该字符串是否结束,结束值为0,每次计算相加本位的两个数字(i和j)和进位值add,把结果接在空字符串ret的末尾,然后下一组。所以只有当两个下标均为-1且进位值为0时,才结束循环。由于是逆序存储,所以要对结果再次逆序操作,使其正序。(讲的不是很好,读者能理解就行,不能理解看看他人的讲解)

代码如下:

// 反转字符串
void reverse(string& s)
{int i = 0, j = s.size() - 1;  // 开始和结尾while (i < j){// 交换char tmp = s[j];s[j] = s[i];s[i] = tmp;// 下一组++i;--j;}
}class Solution {
public:string addStrings(string num1, string num2) {// 和加法一样,每位相加int i = num1.size() - 1, j = num2.size() - 1;  // 下标,最后一位string ret("");  // 存储相加的结果int add = 0;  // 上一位是否有进位while (i >= 0 || j >= 0 || add > 0){// 两数本位取值int n1, n2;n1 = (i >= 0 ? num1[i] - '0' : 0);n2 = (j >= 0 ? num2[j] - '0' : 0);// 本位相加结果int result = n1 + n2 + add;// 存储本位和进位ret += (result % 10 + '0');  // 这里不用强转,char类型进行算数运算都会转换为int类型add = result / 10;// 下一位--i;--j;}// 反转结果字符串reverse(ret);return ret;}
};

2. 字符串中的第一个唯一字符

题目描述:给定一个字符串 s ,找到 它的第一个不重复的字符,并返回它的索引 。如果不存在,则返回 -1 。

示例 1:

输入: s = “leetcode”
输出: 0
示例 2:

输入: s = “loveleetcode”
输出: 2
示例 3:

输入: s = “aabb”
输出: -1

提示:
1 <= s.length <= 105
s 只包含小写字母

题目链接: https://leetcode.cn/problems/first-unique-character-in-a-string/description/?clienttype=8&version=7.40.0.113&from=win32_yunguanjia&channel=00000000000000000000000040000001&privilege=&pri_extra=

解题思路:
可以看到提示只有26个英文字母,那我们可以是用统计算法。创建一个大小为26的int数组,遍历一遍字符串存储每个字符出现的次数,然后再次遍历字符串,找出第一个唯一字符。可以通过让字符减去字符’a’得到字符在字符数组中的位置。

代码如下:

class Solution {
public:int firstUniqChar(string s) {// 存储26个小写字母出现的次数int times[26] = { 0 };// 遍历字符串存储字符的出现次数int size = s.size();for (int i = 0; i < size; ++i){int n = s[i] - 'a';++times[n];}// 找出第一个出现一次的字符int key = -1;for (int i = 0; i < size; ++i){int n = s[i] - 'a';if (times[n] == 1){key = i;break;}}// 输出return key;}
};

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

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

相关文章

浅谈线性化

浅谈线性化 原文&#xff1a;浅谈线性化 - 知乎 (zhihu.com) All comments and opinions expressed on Zhihu are mine alone and do not necessarily reflect those of my employers, past or present. 本文内容所有内容仅代表本人观点&#xff0c;和Mathworks无关 (这里所说…

揭秘Java I/O体系-从装饰者模式到Reader、Writer流

作为资深Java开发者&#xff0c;相信大家对Java的I/O体系都不会陌生。毕竟&#xff0c;I/O操作无处不在&#xff0c;是我们与外部世界进行交互的关键桥梁。今天&#xff0c;就让我带大家领略一下Java I/O体系的精髓所在! 我们将从装饰者模式的设计理念出发&#xff0c;深入分析…

备忘录--

备忘录 vue新建项目&#xff0c;body 大小占不了全屏 // 解决问题 // public/index.html 更改基础样式 html,body{height: 100%width: 100%&#xff1b;margin: 0;border: 0;padding: 0; }Element Plus 经典布局 参考 Element Plus 官网 <template><div class"…

移动端性能测试(android/ios)

solox官网 https://github.com/smart-test-ti/SoloX solox简介 实时收集android/ios性能的工具&#xff0c;Android设备无需Root&#xff0c;iOS设备无需越狱。有效解决Android和iOS性能的测试和分析挑战。 solox安装 环境准备 python安装3.10以上的 python官网下载地址…

JavaScript 创建新节点的方法

在 JavaScript 中&#xff0c;可以使用 document.createElement() 方法来创建新的节点。该方法接受一个字符串参数&#xff0c;表示要创建的节点类型&#xff0c;如 "div"、"p" 等。 创建一个新节点的基本步骤如下&#xff1a; 使用 document.createElem…

C# 控制流语句详解

C#提供了多种控制流语句&#xff0c;允许开发者根据不同的条件执行不同的代码分支。本篇博客将详细介绍if-else、switch、while、do-while、for、foreach循环&#xff0c;以及break、continue、goto、return语句。 if-else 语句 if-else语句用于基于条件执行不同的代码分支。…

Elasticsearch 分布式搜索、分布式索引、分布式存储详解

Elasticsearch 分布式搜索、分布式索引、分布式存储详解 Elasticsearch 分布式搜索、分布式索引、分布式存储详解一、引言二、Elasticsearch 分布式搜索详解1. 分片和副本2. 查询过程中的搜索流程3. 搜索结果的合并与排序 三、Elasticsearch 分布式索引详解四、Elasticsearch 分…

Mac终端安装brew(亲测有效)

找了好久&#xff0c;七七八八都是报访问不到github的问题&#xff0c;下面这个亲测有效&#xff0c;方便快捷&#xff0c;可以试试 # 安装脚本&#xff0c;直接执行&#xff0c;按照提示输入即可 /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/ma…

数据结构栈(C语言Java语言的实现)相关习题

文章目录 栈概念以及代码实现例题[232. 用栈实现队列](https://leetcode.cn/problems/implement-queue-using-stacks/)[1614. 括号的最大嵌套深度](https://leetcode.cn/problems/maximum-nesting-depth-of-the-parentheses/)[234. 回文链表](https://leetcode.cn/problems/pal…

鸿蒙ArkTS声明式开发:跨平台支持列表【透明度设置】 通用属性

透明度设置 设置组件的透明度。 说明&#xff1a; 开发前请熟悉鸿蒙开发指导文档&#xff1a; gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。 从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版…

Vue3-Vite-ts 前端生成拓扑图,复制即用

完整代码&#xff0c;复制即可用&#xff0c;样式自调 试过 jointjs dagre-d3 vis&#xff0c;好用一点 方法1&#xff1a;Vis.js npm install vis-network <template><div id"mynetwork" class"myChart" :style"{width: 100%, height: 9…

【UE5:CesiumForUnreal】——加载无高度地形数据

目录 1.实现目的 2.数据准备 2.1下载数据 2.2 数据切片 3.加载无地形数据 1.实现目的 在CesiumForUnreal插件中&#xff0c;我们加载地图和地形图层之后&#xff0c;默认都是加载的带有高程信息的地形数据&#xff0c;在实际的项目和开发中&#xff0c;有时候我们需要加载无…

lipo制作通用版本静态库

文章目录 目的了解多架构的maclipo如何利用lipo编译通用版本静态库lipo 命令整理扩展目的 主要是使用lipo命令在macOS上创建通用版本的静态库(.a文件),来支持多种架构,如arm64,x86_64。 学习目的: 了解mac 不同架构arm64, x86_64了解lipo命令了解多架构的mac 随着appl…

数据挖掘 | 实验三 决策树分类算法

文章目录 一、目的与要求二、实验设备与环境、数据三、实验内容四、实验小结 一、目的与要求 1&#xff09;熟悉决策树的原理&#xff1b; 2&#xff09;熟练使用sklearn库中相关决策树分类算法、预测方法&#xff1b; 3&#xff09;熟悉pydotplus、 GraphViz等库中决策树模型…

【期末速成】——计算机组成原理(1)概述

目录 一、什么是计算机的组成 二、冯诺依曼体系结构计算机的特点 三、计算机系统的层次结构 四、机器语言、汇编语言、高级语言, 五、 编译程序、解释程序、汇编程序 六、已知主频、CPI计算程序运行时间 一、什么是计算机的组成 计算机的组成可以分为五个部件和两个信息…

数据通信中,证书的作用?

标签: 证书; 证书的作用;数据通信; 在计算机信息安全领域,证书(Certificate)起着至关重要的作用,主要用于确保通信的安全性、完整性和可信性。以下是证书的主要作用及其相关概念的解释: 1. 身份验证 证书的一个主要作用是验证身份。在网络通信中,证书用于确认通信…

代码随想录算法训练营第二十四天|

[LeetCode] 77. 组合 [LeetCode] 77. 组合 文章解释 [LeetCode] 77. 组合 视频解释 题目: 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1&#xff1a; 输入&#xff1a;n 4, k 2 输出&#xff1a; [[2,4…

针对固定定位/绝对定位元素实现水平垂直居中的方法

知道具体宽度情况下 水平居中位置:(总宽度 - 元素宽度) / 2 垂直居中位置:(总高度 - 元素高度) / 2不明确具体宽度情况下 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" co…

VMware虚拟机安装Ubutu

打开vmware按步骤安装 选择安装虚拟机路径 选择下载好的镜像 开启虚拟机 等待 回车确认 空格选择/取消 等待等待好按回车 输入用户名&#xff0c;密码就好了

树形结构-CRUD接口

先看一下效果&#xff1a;整体的效果 新增效果 --默认值是 default 修改效果 - 大致效果如上 --------------------------------------------------------------------------------------------------------------------------------- 下面讲解代码如何实现的 根据你使用…