leetcode算法之字符串

目录

  • 1.最长公共前缀
  • 2.最长回文子串
  • 3.二进制求和
  • 4.字符串相乘

1.最长公共前缀

最长公共前缀
在这里插入图片描述

class Solution {
public:string longestCommonPrefix(vector<string>& strs) {//法一:两两比较string ret = strs[0];for(int i=1;i<strs.size();i++){ret = findCommon(ret,strs[i]);}return ret;}string findCommon(string& s1,string& s2){int i = 0;while(i<min(s1.size(),s2.size()) && s1[i]==s2[i]) i++;return s1.substr(0,i);}
};
class Solution {
public:string longestCommonPrefix(vector<string>& strs) {//法二:统一比较int n = strs[0].size();for(int i=0;i<n;i++){char tmp = strs[0][i];for(int j = 1;j<strs.size();j++){if(i == strs[j].size() || tmp != strs[j][i]){return strs[0].substr(0,i);}}}return strs[0];}
};

2.最长回文子串

最长回文子串
在这里插入图片描述

class Solution {
public:string longestPalindrome(string s) {//使用中心扩展算法求解int begin = 0,len = 0,n = s.size();for(int i=0;i<n;i++){//先做奇数长度的扩展int left = i,right = i;while(left>=0 && right<n && 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&& s[left] == s[right]){left--;right++;}if(right-left-1>len){begin = left+1;len = right - left-1;}}return s.substr(begin,len);}
};

3.二进制求和

二进制求和
在这里插入图片描述

class Solution {
public:string addBinary(string a, string b) {//模仿列竖式相加int t = 0;//表示进位int cur1 = a.size()-1;int cur2 = b.size()-1;string ret;while(cur1>=0 || cur2>=0 || t){if(cur1>=0) t+=a[cur1--]-'0';if(cur2>=0) t+=b[cur2--]-'0';ret += t%2+'0';t /=2;}reverse(ret.begin(),ret.end());return ret;}
};

4.字符串相乘

字符串相乘
在这里插入图片描述

class Solution {
public:string multiply(string num1, string num2) {//高精度乘法//使用无进位相乘再相加,最后再处理进位//1.准备工作int m = num1.size(),n = num2.size();reverse(num1.begin(),num1.end());reverse(num2.begin(),num2.end());vector<int> tmp(m+n-1);//2.无进位相乘再相加for(int i=0;i<n;i++){for(int j=0;j<m;j++){tmp[i+j] += (num2[i]-'0')*(num1[j]-'0');}}//3.处理进位int cur = 0,t = 0;string ret;while(cur<m+n-1 || t!=0){if(cur<m+n-1) t+=tmp[cur++];ret += t%10+'0';t /= 10;}//4.处理前导零while(ret.size()>1 && ret.back() == '0') ret.pop_back();//5.注意输出结果顺序reverse(ret.begin(),ret.end());return ret;}
};

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

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

相关文章

Linux gzip命令用法详解:如何压缩和解压文件(附实例教程和注意事项)

Linux gzip命令介绍 Linux gzip命令用于压缩文件。它可以减小文件的大小以节省磁盘空间&#xff0c;并且可以通过gzip命令将多个文件合并成一个压缩文件。 Linux gzip命令适用的Linux版本 Linux gzip命令可以在多数Linux发行版&#xff08;如Debian、Ubuntu、Alpine、Arch L…

NocoBase企业级低代码开发平台有什么优势?

企业级低代码开发平台&#xff0c;作为一种新兴的技术解决方案&#xff0c;正逐渐在企业中受到越来越多的关注和青睐。它以其高效、灵活的特性&#xff0c;为企业的创新提供了更快速、更可持续的支持和推动。 低代码开发平台是一种以图形化界面为基础&#xff0c;结合拖拽式编…

Qt右键菜单+动作+qss案例

Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//设置界面颜色样式this->setStyleSheet("background-color:rgb(54,54,54)");//创建文件菜单QMenu *fileMenuItems new QMenu;//菜单添加iconfileMenuItems->se…

在Spring Boot中配置@Async的线程池的拒绝策略

在上一篇文章中&#xff0c;我们使用多个线程隔离不同的异步任务&#xff0c;这篇文章&#xff0c;我们将围绕在Async的线程池的拒绝策略进行完善线程池的使用&#xff0c;在我们例举案例之前&#xff0c;我们先了解一下&#xff1a; Async的拒绝策略用来解决什么问题&#xff…

如何根据接口文档,轻松快速的模拟接口服务?

什么是WireMock? WireMock 是一个Http 模拟服务,其核心也是一个web服务,WireMock主要是为特定请求提供固定的返回值。 WireMock可以作为单独进程启动,模拟一个WEB服务器,提供一些API访问,并返回特定的返回值。也可以作为第三方库在项目中使用。 如何使用 standalone方…

PTA:计算m到n之间所有素数的和

题目 计算m到n之间所有素数的和&#xff0c;其中 2 < m <n <100 输入格式: 请在这里写输入格式。例如&#xff1a;输入两个正整数 输出格式: 请在这里描述输出格式。例如&#xff1a;输出两个正整数之间的素数和。 样例 输入样例: 在这里给出一组输入。例如&…

2161根据数字划分数组

给你一个下标从 0 开始的整数数组 nums 和一个整数 pivot 。请你将 nums 重新排列&#xff0c;使得以下条件均成立&#xff1a; 所有小于 pivot 的元素都出现在所有大于 pivot 的元素 之前 。所有等于 pivot 的元素都出现在小于和大于 pivot 的元素 中间 。小于 pivot 的元素之…

C 语言预处理器

C 语言预处理器 在本教程中&#xff0c;将向您介绍c预处理器&#xff0c;并在示例的帮助下学习使用&#xff03;include&#xff0c;&#xff03;define和条件编译。C预处理程序是一个宏预处理程序&#xff08;允许您定义宏&#xff09;&#xff0c;可以在编译程序之前对其进行…

vue3如何判断是不是响应式数据

isRef: 检查一个值是否为一个 ref 对象 isReactive: 检查一个对象是否是由 reactive 创建的响应式代理 isReadonly: 检查一个对象是否是由 readonly 创建的只读代理 isProxy: 检查一个对象是否是由 reactive 或者 readonly 方法创建的代理 <template><div>&l…

allure修改logo 自定义

无论pytest还是httprunner都适用allure生成报告。那我们就有必要对allure报告进行一些定制。我们先修改logo&#xff1a; 1、给allure.yml插件custom-logo-plugin 找到allure安装的位置&#xff0c;在config文件夹下有一个allure.yml的配置文件。打开它&#xff0c;在最后添加…

Python接口自动化测试 ---Allure报告使用详解

这一节主要是记录allure的内容以及用法&#xff0c;怎么让他生成一个完整的想要的报告。 allure生成的报告和其他五花八门的报告对比了一下&#xff0c;它的可读性是最好、最直观的。这不仅仅是我想要的效果&#xff0c;也是很多小伙伴想要的结果&#xff0c;毕竟这是给领导看…

扩散模型DDPM学习笔记

扩散模型DDPM 文章目录 扩散模型DDPM如何运作基本概念训练过程推理过程&#xff1a; 目标损失函数推导评估标准 论文地址&#xff1a; Denoising Diffusion Probabilistic Models (DDPM) 如何运作 ​ 从guassian distribution进行采样得到一个噪声的图片&#xff0c;图片大小…

【复杂网络建模】——ER网络度分布、无标度网络度分布

目录 一、复杂网络介绍 二、ER网络、SF网络介绍 1、ER网络(Erdős-Rnyi网络)

测开笔记--Typescript: 文件复制到指定目录

开发背景&#xff1a; 自动化开发语言使用的是TypeScript&#xff1b;框架用的是playwright。有个测试脚本需要先将几个文件复制粘贴到新建的项目文件夹下&#xff0c;系统会读取该文件&#xff0c;然后生成页面信息。 关键字&#xff1a;文件复制粘贴&#xff1b; 新建的项目…

为什么我不能给shopify的图片添加alt

首先我们要明白是什么ALT标签&#xff0c;为什么要添加这个标签&#xff0c;这个标签有什么用 ALT标签是什么 ALT属性是HTML的一部分&#xff0c;它为那些无法查看图像的用户提供替代的文本描述。 ALT标签有什么用 使用ALT属性还可以帮助搜索引擎爬虫更好地理解您的网站内容。有…

SpringBoot配置多个不同Thymeleaf模板位置

最近开发当中需要在SpringBoot配置多个不同Thymeleaf位置&#xff0c;特此记录下相关过程 默认Thymeleaf配置 当我们集成thymeleaf后&#xff0c;会有一个默认的配置信息,可以在配置文件当中配置默认的信息&#xff0c;修改路径&#xff0c;前后缀等等参数 spring:thymeleaf…

华为OD机试 - 小华地图寻宝(Java JS Python C)

题目描述 小华按照地图去寻宝,地图上被划分成 m 行和 n 列的方格,横纵坐标范围分别是 [0, n-1] 和 [0, m-1]。 在横坐标和纵坐标的数位之和不大于 k 的方格中存在黄金(每个方格中仅存在一克黄金),但横坐标和纵坐标之和大于 k 的方格存在危险不可进入。小华从入口 (0,0) …

学习知识回顾随笔(远程连接MySQL|远程访问Django|HTTP协议|Web框架)

文章目录 如何远程连接MySQL数据库1.创建用户来运行&#xff0c;此用户从任何主机连接到mysql数据库2.使用IP地址来访问MySQL数据库 如何远程访问Django项目Web应用什么是Web应用应用程序的两种模式Web应用程序的优缺点 HTTP协议&#xff08;超文本传输协议&#xff09;简介HTT…

Airtest自动化测试工具实战演练

一开始知道Airtest大概是在年初的时候&#xff0c;当时&#xff0c;看了一下官方的文档&#xff0c;大概是类似Sikuli的一个工具&#xff0c;主要用来做游戏自动化的&#xff0c;通过截图的方式用来解决游戏自动化测试的难题。最近&#xff0c;移动端测试的同事尝试用它的poco库…

LCM-LoRA模型推理简明教程

潜在一致性模型 (LCM) 通常可以通过 2-4 个步骤生成高质量图像&#xff0c;从而可以在几乎实时的设置中使用扩散模型。 来自官方网站&#xff1a; LCM 只需 4,000 个训练步骤&#xff08;约 32 个 A100 GPU 小时&#xff09;即可从任何预训练的稳定扩散 (SD) 中提取出来&#…