C++ 习题精选(2)

目录

  • 1. 验证回文串
  • 2. 字符串相乘

1. 验证回文串

题目描述:如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。字母和数字都属于字母数字字符。给你一个字符串 s,如果它是 回文串 ,返回 true ;否则,返回 false 。

示例 1:
输入: s = “A man, a plan, a canal: Panama”
输出:true
解释:“amanaplanacanalpanama” 是回文串。

示例 2:
输入:s = “race a car”
输出:false
解释:“raceacar” 不是回文串。

示例 3:
输入:s = " "
输出:true
解释:在移除非字母数字字符之后,s 是一个空字符串 “” 。
由于空字符串正着反着读都一样,所以是回文串。

提示:
1 <= s.length <= 2 * 105
s 仅由可打印的 ASCII 字符组成

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

答:解题思路:由于判断回文时不区分字母大小写且忽略数字和字母字符以外的字符,所以需要先把字符串中的字符统一转成大写或小写。首先创建一个string类的tmp对象,遍历一遍字符串把数字和字母字符存储到tmp中,同时统一转换大小写,然后对tmp对象判断是否回文。

代码如下:

class Solution {
public:bool isPalindrome(string s) {// 所需变量string tmp;  // 存储原顺序的数字和字母字符// 遍历字符串,存储数字和字母字符,同时把字母字符转换为小写int len = s.size();for (int i = 0; i < len; ++i){if (isalnum(s[i]))  // 头文件cctype中的函数,判断是否为数字和字母字符{// 如果是字母字符则转换为小写if (isalpha(s[i]))s[i] = tolower(s[i]);// 存储tmp += s[i];}    }// 遍历tmp字符串,判断是否回文int begin = 0;int end = tmp.size() - 1;while (begin < end){// 本组字符判断if (tmp[begin] != tmp[end])return false;// 下一组++begin;--end;}return true;}
};

2. 字符串相乘

题目描述:给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。

注意:不能使用任何内置的 BigInteger 库或直接将输入转换为整数。

示例 1:
输入: num1 = “2”, num2 = “3”
输出: “6”

示例 2:
输入: num1 = “123”, num2 = “456”
输出: “56088”

提示:
1 <= num1.length, num2.length <= 200
num1 和 num2 只能由数字组成。
num1 和 num2 都不包含任何前导零,除了数字0本身。

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

答:解题思路:这道题也算C++ 习题精选(1)中字符串相加的进阶题了。字符串相加我们想到了数值相加,那么字符串相乘我们也可以想到数值相乘。首先,判断乘数是否为0,即判断两个字符串中是否有一个为0。然后用第二个字符串中的每一位去乘以第一个字符串,对每次相乘的结果补0,个位不补,十位补一个0。然后把这些相乘的结果加起来。
在这里插入图片描述
代码如下:

// 一次相乘的函数
static void once(const string& s, string& tmp, char c, int z)
{// 如果乘数位0,直接返回if (c == '0')return;int add = 0;  // 进位值int i = s.size() - 1;int n;int x = c - '0';while (i >= 0 || add > 0){// 每位的数字n = i >= 0 ? s[i] - '0' : 0;// 相乘int reslut = n * x + add;// 存储add = (reslut / 10);tmp += (reslut % 10 + '0');// 下一位数字--i;}// 反转字符串reverse(tmp.begin(), tmp.end());// 补0while (z--)tmp += '0';
}// 两个字符串相加
static string add(const string& s1, const string& s2)
{int i = s1.size() - 1, j = s2.size() - 1;  // 每位的下标int n1, n2;  // 每位数int add = 0;  // 进位值string tmp;  // 存储相加结果while (i >= 0 || j >= 0 || add > 0){// 每位数的值n1 = i >= 0 ? s1[i] - '0' : 0;n2 = j >= 0 ? s2[j] - '0' : 0;// 相加int result = n1 + n2 + add;// 存储add = result / 10;tmp += (result % 10 + '0');// 下一组--i;--j;}// 反转字符串reverse(tmp.begin(), tmp.end());// 返回结果return tmp;
}class Solution {
public:string multiply(string num1, string num2) {// 如果有一个乘数为0,则返回0if (num1 == "0" || num2 == "0")return "0";// 所需变量string result;  // 存储结果// 用num2的每一位乘以num1,然后相加int j = 0;  // 补0的个数for (int i = num2.size() - 1; i >= 0; --i, ++j){// 存储每次相乘的结果string tmp;// 相乘once(num1, tmp, num2[i], j);// 相加每次结果并存储result = add(result, tmp);}// 返回结果return result;}
};

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

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

相关文章

Vue01-vue的简介

一、Vue是什么&#xff1f; 一套用于构建用户界面的渐进式javaScript框架。 构建用户界面&#xff1a; 渐进式&#xff1a; 目前Vue的地位&#xff1a;生态完善&#xff0c;国内前端工程师必备技能。 二、Vue的特点 一个XXX.vue就是一个组件&#xff0c;封装的概念&#xff0c…

threejs的三维前端项目用THREEPlaneGeometry创建平面几何体对象的方法

在 Three.js 中&#xff0c;可以使用THREE.PlaneGeometry类来创建平面几何体对象。THREE.PlaneGeometry类用于创建一个具有指定宽度和高度的平面几何体。 艾斯视觉作为行业ui设计与前端开发服务商很高兴能在这里与你共同探讨&#xff1a;以下是一个示例代码&#xff0c;展示了如…

2023职称继续教育--新时代如何培养和造就未来科技创新领军人才

单选题&#xff08;共7题&#xff0c;每题5分&#xff09; 1、《深入实施新时代人才强国战略 加快建设世界重要人才中心和创新高地》指出&#xff0c;到&#xff08;&#xff09;年&#xff0c;形成我国在诸多领域人才竞争比较优势&#xff0c;国家战略科技力量和高水平人才队伍…

文心一言 VS 讯飞星火 VS chatgpt (272)-- 算法导论20.2 7题

七、试说明如果 PROTO-vEB-MINIMUM 中的第 9 行被执行&#xff0c;则proto-vEB 结构为空。如果要写代码&#xff0c;请用go语言。 文心一言&#xff1a; 在 PROTO-vEB-MINIMUM 算法中&#xff0c;我们假设你指的是一个基于位向量&#xff08;bit-vector&#xff09;的扩展二进…

【杂项】几个快捷键提高你的办公效率(装13使用)

前言 其实在Windows下不同的IDE也支持在文本编辑的时候&#xff0c;让你不需要使用鼠标也能够快速的操作。下面以VSCODE为例子 从当前位置开始选中 shift 键盘下键多行插入 ctrl alt 鼠标下键 退出多行插入esc回到一行文字开头 Home 键&#xff0c;回到一行文字结尾 End。…

OSG学习记录

学习自OpenSceneGraph Quick Start Guide的中文版&#xff0c;建议学习书&#xff08;比较全面&#xff09; OSG的内存管理机制 程序保存一个指向根节点的指针&#xff0c;不保存场景图形中其他节点的指针。根节点将直接或间接地“引用”场景图形中的所有的节点。 当应用程序…

回溯算法 -- 77. 组合

目录 一.题目描述 二.解题思路 三.回溯三部曲 3.1确定递归函数的返回值以及参数 3.2回溯算法的终止条件 3.3确定单层循环搜索逻辑 四.具体的代码 一.题目描述 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案…

【数据结构与算法 | 堆篇】力扣215

1. 力扣215 : 数组中的第k个最大元素 (1). 题 给定整数数组 nums 和整数 k&#xff0c;请返回数组中第 k 个最大的元素。 请注意&#xff0c;你需要找的是数组排序后的第 k 个最大的元素&#xff0c;而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O(n) 的算法解…

【Linux】进程间通信(System V IPC)

这节我们开始学习System V IPC方案。 分别是共享内存&#xff0c;消息队列与信号量 会着重讲解共享内存&#xff0c;但是消息队列与信号量只会说明一下原理。 原因&#xff1a;System V是新设计的一套标准 与文件的整合度不高只能进行本地通信 更何况&#xff0c;我们现在有…

代码随想录三刷day52

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、力扣417. 太平洋大西洋水流问题二、力扣827. 最大人工岛三、力扣127. 单词接龙四、力扣841. 钥匙和房间 前言 岛屿问题最容易让人想到BFS或者DFS&#xff0…

若依开发-数据库修改密码

若依忘记密码 在SecurityUtils类添加 public static void main(String[] args) {System.out.println(SecurityUtils.encryptPassword("admin123"));}即可打印出加密后密码

向数据库插入一条数据同时获取主键id

首先创建一个对象 将这个对象使用mybatis插入数据库 Student stu new Student(null, "stu", 18, null); mapper.insertEntity(stu); System.out.println(stu); 在mapper.xml文件中开启配置之后输出传入的stu对象就会有主键id回传 <!-- 插入语句示例 int ins…

探索安全之道 | 企业漏洞管理:从理念到行动

如今&#xff0c;网络安全已经成为了企业管理中不可或缺的一部分&#xff0c;而漏洞管理则是网络安全的重中之重。那么企业应该如何做好漏洞管理呢&#xff1f;不妨从业界标准到企业实践来一探究竟&#xff01;通过对业界标准的深入了解&#xff0c;企业可以建立起完善的漏洞管…

谷歌发布文生视频模型——Veo,可生成超过一分钟高质量1080p视频

前期我们介绍过OpenAI的文生视频大模型-Sora 模型&#xff0c;其模型一经发布&#xff0c;便得到了大家疯狂的追捧。而Google最近也发布了自己的文生视频大模型Veo&#xff0c;势必要与OpenAI进行一个正面交锋。 Veo 是Google迄今为止最强大的视频生成模型。它可以生成超过一分…

计算机网络 3.7广域网

第七节 广域网 一、认识广域网 1.定义&#xff1a;一个范围广的计算机网络&#xff0c;在地理上可以跨越很大的距离&#xff0c;实现局域网资源共享与广域网共享的结合。 2.组成&#xff1a;通信子网、资源子网。 3.主要设备&#xff1a;路由器、调制解调器&#xff0c;通信…

JVM虚拟机性能监控工具

命令行工具 jps 虚拟机进程状况查询工具 jps(JVM Process Status Tool)&#xff0c;可以列出正在运行的虚拟机进程&#xff0c;并显示虚拟机执行主类名称或者jar文件名&#xff0c;还有这些进程的本地虚拟机唯一ID(LVMID&#xff0c;Local Virtual Machine Identifier)。 # …

openGuass(postgres)导出及导入数据一日游

目的&#xff1a; 实现每周备份一次数据库 新建一个sh文件 #!/bin/bash # 定义参数 DB_USER"wangzhezhizuo" DB_PASSWORD"wangzhezhizuo123" DB_NAME"mydb" DB_SCHEME"public" DB_PORT"5432" REMOTE_IP"192.168.0.1…

网页安全登陆的设计思路

对于Web网站来讲,不管是企业内容信息化系统,还是公共站点(博客、音视频站等),都有需要用户注册和登录的功能。用以识别用户、信息交互、信息隔离以及商业行为等场景。用户数据已成为网站的重要资产。保护用户信息(数据)是网站安全运行的关键任务。本文以用户安全登录的场…

dubbo复习:(15)泛化调用

客户端在没有拿到服务器端接口定义的情况下通过反射获取服务 1.服务器端定义接口 package cn.edu.tju.service;public interface DevelopService {String invoke(String param); }2.服务器端实现接口 package cn.edu.tju.service;import org.apache.dubbo.config.annotation.…

521源码-网站源码-Thinkphp聊天室H5实时聊天室群聊聊天室自动分配账户完群组/私聊/禁言等功能/全开源运营版本

全开源运营版本聊天室H5实时聊天室群聊聊天室自动分配账户完群组/私聊/禁言等功能 都是去年买的&#xff0c;很多买的源码基本都下架了&#xff0c;详情还是套已经老站的&#xff0c;可能网上已经流传了点&#xff0c;不过还是不影响这个源码的牛逼所在 运营版本的聊天室&…