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

string经典题目(C++)

文章目录

  • 前言
  • 一、最长回文子串
    • 1.题目解析
    • 2.算法原理
    • 3.代码编写
  • 二、字符串相乘
    • 1.题目解析
    • 2.算法原理
    • 3.代码编写
  • 总结


前言

一、最长回文子串

1.题目解析

给你一个字符串 s,找到 s 中最长的回文子串。

示例 1:
输入:s = “babad”
输出:“bab”
解释:“aba” 同样是符合题意的答案。

示例 2:
输入:s = “cbbd”
输出:“bb”

提示:
1 <= s.length <= 1000
s 仅由数字和英文字母组成

2.算法原理

中心扩展算法

回文串有这样一个特点,从中间劈开,两边对称。
固定一个中心点,从中心点开始,向两边扩展。
奇数长度和偶数长度都需要考虑。

在这里插入图片描述

3.代码编写

class Solution {
public:string longestPalindrome(string s) {//中心扩展算法int begin=0;int len=0;int n=s.size();for(int i=0;i<n;i++){int left=i;int right=i;//奇数长度while(left>=0&&right<=n-1&&s[left]==s[right]){left--;right++;}if(right-left-1>len){begin=left+1;len=right-left-1;}//偶数left=i;right=i+1;while(left>=0&&right<=n-1&&s[left]==s[right]){left--;right++;}if(right-left-1>len){begin=left+1;len=right-left-1;}}return s.substr(begin,len);}
};

二、字符串相乘

1.题目解析

43. 字符串相乘

2.算法原理

我们可以按照正常加减法进行进位计算,但是会很麻烦,

无进位相乘然后相加,最后处理进位。

我们需要对两个数组进行逆序。

在这里插入图片描述

同时处理前导0的场景。

我们利用一个数组进行存储,二者相乘结果正好可以放在下标相加的位置。

3.代码编写

class Solution {
public:string multiply(string num1, string num2) {int m=num1.size();int n=num2.size();//两个字符串逆序reverse(num1.begin(),num1.end());reverse(num2.begin(),num2.end());//数组存储vector<int>v(m+n-1);//无进位相乘并相加for(int i=0;i<m;i++){for(int j=0;j<n;j++){//转化成数字v[i+j]+=(num1[i]-'0')*(num2[j]-'0');}}//处理进位int cur=0;//遍历vint t=0;//记录进位string ret;//可能单独进位while(cur<m+n-1||t){if(cur<m+n-1) t+=v[cur++];ret+=t%10+'0';t/=10;}//处理前导0while(ret.size()>1&&ret.back()=='0') ret.pop_back();reverse(ret.begin(),ret.end());return ret;}
};

总结

以上就是今天要讲的内容 。希望对大家的学习有所帮助,仅供参考 如有错误请大佬指点我会尽快去改正 欢迎大家来评论~~ 😘 😘 😘

http://www.lryc.cn/news/370848.html

相关文章:

  • 三篇卫星切换的论文
  • VUE之重定向redirect
  • 服务器时区与数据库时区不一致导致时间bug记录
  • 华为鸿蒙HarmonyOS应用开发者高级认证题库
  • 细说MCU串口函数及使用printf函数实现串口发送数据的方法
  • PBox iOS端的应用隐藏、图片视频加密软件
  • 【QT5】<总览五> QT多线程、TCP/UDP
  • fastadmin/thinkPHPQueue消息队列详细教程
  • 社区新标准发布!龙蜥社区标准化 SIG MeetUp 圆满结束
  • 快速开始一个go程序(极简-快速入门)
  • HTTPS缺失?如何轻松解决IP地址访问时的“不安全”警告
  • 验证码识别接口、多种样式验证码识别接口、中英文验证码识别接口
  • 测试bert_base不同并行方式下的推理性能
  • FFMpeg解复用流程
  • 438. 找到字符串中所有字母异位词
  • 【Qt 快速入门(三)】- Qt信号和槽
  • Debain12 离线安装docker
  • C++day5
  • SHELL脚本学习(六) 呈现数据
  • 计算机网络:网络层 - IPv4数据报 ICMP协议
  • 【需求设计】软件概要设计说明怎么写?概要设计说明书实际项目案例(63页Word直接套用)
  • 网络编程2----UDP简单客户端服务器的实现
  • 服务架构的设计原则
  • Day 14:2938. 区分黑球和白球
  • 部署YUM仓库及NFS共享服务
  • web学习笔记(六十五)
  • 66. UE5 RPG 实现远程攻击武器配合角色攻击动画
  • 用 Python 编写自动发送每日电子邮件报告的脚本,并指导我如何进行设置
  • AI大模型的战场:通用与垂直的较量
  • 单目标应用:基于人工原生动物优化器APO的微电网优化(MATLAB代码)