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

《算法题讲解指南:优选算法-字符串》--61.最长公共前缀,62.最长回文子串,63.二进制求和,64.字符串相乘

小叶-duck个人主页❄️个人专栏《Data-Structure-Learning》《C入门到进阶自我学习过程记录》《算法题讲解指南》--优选算法《算法题讲解指南》--递归、搜索与回溯算法《算法题讲解指南》--动态规划算法✨未择之路不须回头已择之路纵是荆棘遍野亦作花海遨游目录61.最长公共前缀题目链接题目描述题目示例解法一(两两比较)算法思路解法二(统一比较)算法思路C算法代码(解法一两两比较)C算法代码(解法二统一比较)算法总结及流程解析62.最长回文子串题目链接题目描述题目示例解法(中心扩散)算法思路C算法代码算法总结及流程解析63.二进制求和题目链接题目描述题目示例3.解法(模拟十进制的大数相加的过程)算法思路C算法代码64.字符串相乘题目链接题目描述题目示例解法(无进位相乘然后相加最后处理进位)算法思路C算法代码(解法一“模拟”列竖式运算)C算法代码(解法二先无进位相乘再相加最后处理进位)算法总结及流程解析结束语61.最长公共前缀题目链接14. 最长公共前缀 - 力扣LeetCode题目描述题目示例解法一(两两比较)算法思路我们可以先找出前两个的最长公共前缀然后拿这个最长公共前缀依次与后面的字符串比较这样就可以找出所有字符串的最长公共前缀。解法二(统一比较)算法思路题目要求多个字符串的公共前缀我们可以逐位比较这些字符串哪一位出现了不同就在哪一位截止。C算法代码(解法一两两比较)class Solution { public: string longestCommonPrefix(vectorstring strs) { //解法一字符串两两比较 string ret strs[0]; for(int i 1; i strs.size(); i) { int index 0; while(index min(ret.size(), strs[i].size()) ret[index] strs[i][index]) { index; } ret strs[i].substr(0, index); } return ret; } };C算法代码(解法二统一比较)class Solution { public: string longestCommonPrefix(vectorstring strs) { //解法二统一比较 string ret; int index; for(int i 0; i strs[0].size(); i) { index i; for(int j 1; j strs.size(); j) { if(index strs[j].size() || strs[0][index] ! strs[j][index]) { ret strs[0].substr(0, index); return ret; } } } ret strs[0].substr(0, index 1); return ret; } };算法总结及流程解析62.最长回文子串题目链接5. 最长回文子串 - 力扣LeetCode题目描述题目示例解法(中心扩散)算法思路枚举每一个可能的子串非常费时有没有比较简单一点的方法呢?对于一个子串而言如果它是回文串并且长度大于2那么将它首尾的两个字母去除之后它仍然是个回文串。如此这样去除一直除到长度小于等于2时呢?长度为1 的自身与自身就构成回文;而长度为2的就要判断这两个字符是否相等了。从这个性质可以反推出来从回文串的中心开始往左读和往右读也是一样的。那么是否可以枚举回文串的中心呢?从中心向两边扩展如果两边的字母相同我们就可以继续扩展;如果不同我们就停止扩展。这样只需要一层for循环我们就可以完成先前两层for循环的工作量。C算法代码class Solution { public: string longestPalindrome(string s) { int left 0; int right 0; int len 0; int begin 0; string ret; //中心扩展算法 for(int i 0; i s.size(); i) { left right i; //奇数长度的扩展 while(left 0 right s.size() s[left] s[right]) { left--; right; } if(len right - left - 1) { begin left 1; len right - left - 1; } //偶数长度的扩展 if(i 1 s[i] s[i - 1]) { left i - 1; right i; while(left 0 right s.size() s[left] s[right]) { left--; right; } if(len right - left - 1) { begin left 1; len right - left - 1; } } } ret s.substr(begin, len); return ret; } };算法总结及流程解析63.二进制求和题目链接67. 二进制求和 - 力扣LeetCode题目描述题目示例3.解法(模拟十进制的大数相加的过程)算法思路模拟十进制中我们列竖式计算两个数之和的过程。但是这里是二进制的求和我们不是逢十进一而是逢二进一。C算法代码class Solution { public: string addBinary(string a, string b) { int ai a.size() - 1; int bi b.size() - 1; string ret; int rem 0; while(ai 0 || bi 0 || rem) { if(ai 0) { rem a[ai] - 0; } if( bi 0) { rem b[bi] - 0; } ret to_string(rem % 2); rem / 2; ai--; bi--; } reverse(ret.begin(), ret.end()); return ret; } };64.字符串相乘题目链接43. 字符串相乘 - 力扣LeetCode题目描述题目示例解法(无进位相乘然后相加最后处理进位)算法思路整体思路就是模拟我们小学列竖式计算两个数相乘的过程。但是为了我们书写代码的方便性我们选择一种优化版本的就是在计算两数相乘的时候先不考虑进位等到所有结果计算完毕之后再去考虑进位。如下图C算法代码(解法一“模拟”列竖式运算)class Solution { public: string addBinary(string a, string b) { reverse(a.begin(), a.end()); reverse(b.begin(), b.end()); int ai a.size() - 1; int bi b.size() - 1; string ret; int rem 0; while(ai 0 || bi 0 || rem) { if(ai 0) { rem a[ai] - 0; } if( bi 0) { rem b[bi] - 0; } ret to_string(rem % 10); rem / 10; ai--; bi--; } return ret; } string multiply(string num1, string num2) { //解法一“模拟”列竖式运算 if(num1 0 || num2 0) { return 0; } reverse(num1.begin(), num1.end()); reverse(num2.begin(), num2.end()); string ret 0; for(int i 0; i num2.size(); i) { int rem 0; string tmp; int T i; while(T--) { tmp 0; } int j 0; while(j num1.size() || rem) { if(j num1.size()) { rem ((num2[i] - 0) * (num1[j] - 0)); } tmp to_string(rem % 10); rem / 10; j; } ret addBinary(tmp, ret); } reverse(ret.begin(), ret.end()); return ret; } };C算法代码(解法二先无进位相乘再相加最后处理进位)class Solution { public: string multiply(string num1, string num2) { //解法二先无进位相乘再相加最后处理进位 if(num1 0 || num2 0) { return 0; } //1、准备工作 reverse(num1.begin(), num1.end()); reverse(num2.begin(), num2.end()); int m num1.size(); int n num2.size(); vectorint tmp(m n - 1); //2、先无进位相乘再相加 for(int i 0; i num2.size(); i) { for(int j 0; j num1.size(); j) { tmp[i j] ( num1[j] - 0) * (num2[i] - 0); } } //3、最后处理进位 string ret; int rem 0; int i 0; while(i tmp.size() || rem) { if(i tmp.size()) { rem tmp[i]; } ret to_string(rem % 10); rem / 10; i; } reverse(ret.begin(), ret.end()); return ret; } };算法总结及流程解析结束语到此61.最长公共前缀62.最长回文子串63.二进制求和64.字符串相乘 这四道算法题就讲解完了。最长公共前缀的两种解法两两比较和统一比较 最长回文子串的中心扩散法二进制求和的模拟竖式加法字符串相乘的两种解法模拟竖式乘法和无进位相乘再处理进位。每种解法都提供了C代码实现和思路解析涵盖字符串处理中的常见问题包括前缀匹配、回文检测、二进制运算和大数相乘等典型场景。希望大家能有所收获

相关文章:

《算法题讲解指南:优选算法-字符串》--61.最长公共前缀,62.最长回文子串,63.二进制求和,64.字符串相乘

🔥小叶-duck:个人主页 ❄️个人专栏:《Data-Structure-Learning》《C入门到进阶&自我学习过程记录》 《算法题讲解指南》--优选算法 《算法题讲解指南》--递归、搜索与回溯算法 《算法题讲解指南》--动态规划算法 ✨未择之路&#xff0…...

为什么你的STL allocator在期货做市系统中突然OOM?——穿透式内存池测试报告(含ASan+Valgrind+自研HeapSpy三重校验)

第一章:为什么你的STL allocator在期货做市系统中突然OOM?——穿透式内存池测试报告(含ASanValgrind自研HeapSpy三重校验)现象复现:毫秒级订单流触发的隐性泄漏 某高频做市服务在实盘压测中,持续运行 47 分…...

【快速EI检索 | SPIE出版】2026年量子计算与人工智能国际学术会议(ICQCAI 2026)

2026年量子计算与人工智能国际学术会议(ICQCAI 2026) 2026 International Conference on Environmental Pollution and Sustainable Resource Management 2026年5月8-10日, 中国-北京 大会官网:www.icqcai.com 截稿时间&#…...

Visual C++运行库一站式解决方案:从依赖问题到高效部署

Visual C运行库一站式解决方案:从依赖问题到高效部署 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 定位运行库故障:症状、病因与风险三…...

WPF调试神器:如何在GUI应用中优雅地输出Console日志(附完整代码)

WPF调试神器:如何在GUI应用中优雅地输出Console日志(附完整代码) 在WPF开发过程中,调试信息的实时输出是排查问题的关键环节。传统弹窗或文件日志方式要么打断用户体验,要么缺乏即时性。本文将介绍一种兼顾优雅与高效的…...

【Agent】大模型在线API接入基础入门

大模型在线API接入基础入门一、全球AI模型版图与平台选型1、OpenRouter突破封锁的中转平台2、国内模型生态:性价比与可用性的平衡4、模型选型决策二、获取并保存API KEY三、调用API1、非SDK方式调用2、 OpenAI SDK方式调用(1)什么是SDK&#…...

Wan2.2-I2V-A14B企业级应用:私有化部署保障数据安全与合规

Wan2.2-I2V-A14B企业级应用:私有化部署保障数据安全与合规 1. 企业级文生视频解决方案概述 在当今内容创作领域,视频生成技术正成为企业数字化转型的关键工具。Wan2.2-I2V-A14B作为新一代文生视频模型,通过私有化部署方案为企业提供了安全可…...

CAPL不只是写脚本:揭秘它在整车V流程中的五大实战角色(仿真/测试/诊断)

CAPL不只是写脚本:揭秘它在整车V流程中的五大实战角色(仿真/测试/诊断) 当汽车电子工程师第一次接触CAPL时,往往会被它的"脚本语言"标签所局限。实际上,在整车开发的V流程中,CAPL更像是一把瑞士军…...

simulink和carsim联合仿真的mpc轨迹跟踪模型。

simulink和carsim联合仿真的mpc轨迹跟踪模型。MPC(模型预测控制)轨迹跟踪模型在Simulink和Carsim联合仿真中,通过构建车辆动力学模型、设计MPC控制器,实现对车辆轨迹的精准跟踪。其代码涉及车辆状态方程、MPC优化算法等核心部分。…...

SEO 优化者如何提高网站的转化率

SEO 优化者如何提高网站的转化率 在当今数字化时代,网站的转化率已经成为衡量一个网站成功与否的重要指标之一。对于 SEO 优化者来说,提升网站的转化率不仅能够带来更多的实际业务,还能够为企业赢得更多的客户。SEO 优化者如何在实际操作中提…...

Carsim+Simulink 线控制动系统BBW-EMB联合仿真模型 !BBW-EMB线控制动联合仿真|Carsim+Simulink】

CarsimSimulink 线控制动系统BBW-EMB联合仿真模型 !BBW-EMB线控制动联合仿真|CarsimSimulink】 ✨ 核心仿真配置 ✅ 完整系统架构:包含制动力分配功能四个车轮独立线控制动机构,贴合真实线控制动系统结构; ✅ 精准控制…...

CefFlashBrowser:Flash内容现代化解决方案与完整应用指南

CefFlashBrowser:Flash内容现代化解决方案与完整应用指南 【免费下载链接】CefFlashBrowser Flash浏览器 / Flash Browser 项目地址: https://gitcode.com/gh_mirrors/ce/CefFlashBrowser 当您珍藏的Flash教育课件无法打开,经典的Flash游戏无法运…...

3步实现Android Studio全界面汉化:让开发者效率提升40%的中文语言包方案

3步实现Android Studio全界面汉化:让开发者效率提升40%的中文语言包方案 【免费下载链接】AndroidStudioChineseLanguagePack AndroidStudio中文插件(官方修改版本) 项目地址: https://gitcode.com/gh_mirrors/an/AndroidStudioChineseLanguagePack …...

基于拉丁超立方采样的电力系统概率潮流计算实现分析

采用拉丁超立方采样的电力系统概率潮流计算 (自适应核密度估计,自适应带宽核密度估计) 拉丁超立方采样属于分层采样,是一种有效的用采样值反映随机变量的整体分布的方法。 其目的是要保证所有的采样区域都能够被采样点覆盖。 该方…...

混合储能系统容量优化配置中的信号分解与容量分配算法解析

混合储能容量优化配置(钠硫电池、超级电容) 基于emd和vmd容量配置 1、先用vmd进行输入功率分解,通过分解出高频信号和低频信号,混合储能的功率分配,分给钠硫电池、超级电容。 2、分解后再求出储能的额定容量和额定功率…...

磁链观测器在VESC中使用的方法:实现0速闭环启动的工程实践与代码文档仿真对应

磁链观测器 vesc中使用的方法。 已经移植到了自己的工程中,实现0速闭环启动。 代码、文档、仿真是一一对应的,方便学习。送仿真模型,送翻译的对应的lw。引言 永磁同步电机(Permanent Magnet Synchronous Motor, PMSM)因…...

Windows Android兼容环境部署指南:跨平台运行的技术实现与实践

Windows Android兼容环境部署指南:跨平台运行的技术实现与实践 【免费下载链接】WSA-Windows-10 This is a backport of Windows Subsystem for Android to Windows 10. 项目地址: https://gitcode.com/gh_mirrors/ws/WSA-Windows-10 在数字化办公与开发场景…...

音频频谱分析师的成长之路:Spek实战秘籍深度解锁

音频频谱分析师的成长之路:Spek实战秘籍深度解锁 【免费下载链接】spek Acoustic spectrum analyser 项目地址: https://gitcode.com/gh_mirrors/sp/spek 你是否曾好奇专业音频工程师如何"看见"声音?当音乐制作人谈论"频率冲突&qu…...

柔性制造企业数字化工厂系统建设方案:制造业数字化全景图、打造5大引擎内核构建工业数字化底座、数据中台与数据治理、典型应用场景示例

本方案针对制造企业信息化痛点,提出基于无代码开发与组装式应用的数字化工厂建设思路,通过数据中台整合多源数据,结合MES、APS、WMS、数字孪生等系统,实现柔性生产、规范化管理与效率提升,助力企业低成本、高柔性、可持…...

SEO查询优化如何优化网站内链_SEO查询优化如何优化网页标题和描述

SEO查询优化如何优化网站内链 在当今竞争激烈的互联网环境中,如何提升网站的搜索引擎排名成为每一个网站运营者的首要任务。SEO查询优化不仅仅涉及到外链和关键词,网站内部的链接结构同样起到重要的作用。本文将深入探讨如何通过优化网站内链来提升网站…...

OpenClaw技能组合技:用SecGPT-14B实现ATTCK框架检测

OpenClaw技能组合技:用SecGPT-14B实现ATT&CK框架检测 1. 为什么需要自动化安全检测 去年处理某次安全事件时,我花了整整三天手工比对日志中的异常行为与ATT&CK框架。这种重复劳动让我开始思考:能否让AI自动完成TTPs(战术…...

BLIP-2:如何通过Q-Former桥接冻结视觉与大语言模型实现高效多模态预训练

1. BLIP-2为什么能成为多模态预训练的里程碑 第一次看到BLIP-2论文时,最让我惊讶的是它用如此"简单"的方式解决了多模态预训练的两个核心痛点。传统方法就像要求一个厨师同时精通中餐和西餐,而BLIP-2的创新在于让中餐主厨和西餐主厨各司其职&a…...

LangBot+DeepSeek R1 QQ机器人保姆级配置教程:从下载懒人包到绕过API报错全流程

LangBotDeepSeek R1 QQ机器人保姆级配置教程:从下载懒人包到绕过API报错全流程 最近在折腾QQ聊天机器人,发现LangBotDeepSeek R1的组合特别适合像我这样的懒人。不过实际操作起来还是踩了不少坑,特别是API配置那块,简直让人抓狂。…...

东莞初效过滤器厂家推荐

阳江初效过滤器生产厂家推荐在当今对空气质量要求日益提高的时代,初效过滤器在众多领域发挥着至关重要的作用。阳江地区对初效过滤器的需求也在不断增长,市场上生产厂家众多,而广州灵洁空气净化设备制造有限公司值得重点推荐。专业的技术实力…...

seo关键字价格便宜的方法有哪些

价格便宜的方法有哪些 在当今市场竞争激烈的环境中,降低成本成为企业提升竞争力的关键之一。价格便宜的方法有哪些呢?本文将从问题分析、原因说明、解决方法、注意事项和实用建议五个方面来详细探讨这一话题。 问题分析 我们需要明确什么是“价格便宜…...

客户决策链地图怎么画:老板、采购、技术、项目、法务分别怎么看你

在很多B2B企业的表达体系里,“客户”这个词经常被用得过于整齐。 官网会写“服务行业客户”,销售会说“面向大型企业”,PPT会写“解决复杂需求”。这些话都没问题,但它们通常默认一个前提:客户像一个人一样在决策。而真…...

品牌承诺怎么写:一句承诺如何既让客户心动,又不让企业冒进

在很多B2B企业的品牌项目中,品牌承诺通常是一个非常容易被“重视错方向”的模块。 企业往往会把大量注意力放在“这句话够不够有气势”“够不够像品牌”“销售讲起来顺不顺”,但忽略了一个更底层的问题:这句话一旦公开使用,企业到…...

ADC前端模拟电路设计

对自己工作的一个总结...

GHelper:华硕笔记本的轻量级控制中心 - 简单高效的硬件管理方案

GHelper:华硕笔记本的轻量级控制中心 - 简单高效的硬件管理方案 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, …...

【C++第二十六章】特殊类设计

前言 🚀“特殊类设计”这一章看起来内容不多,但背后其实在讨论一个很典型、也很有代表性的 C 设计问题:类到底能不能限制对象的创建位置,能不能强制某个对象只能在堆上创建,或者只能在栈上创建。 这不是语法技巧题&…...