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.hqwc.cn/news/226338.html

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

相关文章

linux下的工具---yum

一、什么是yum yum是Linux下的软件包管理器 二、什么是软件包管理器 1、在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序. 2、但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在…

深度学习之基于百度飞桨PaddleOCR图像字符检测识别系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介主要特点使用步骤 二、功能三、系统四. 总结 一项目简介 # Introduction to PaddleOCR Image Character Detection and Recognition System Based on Baidu…

JSON详细教程

&#x1f60a;JSON详细教程 &#x1f6a9;JSON简介☃️JSON语法规则&#x1f50a;JSON和JavaScript对象的区别 ☃️JSON数据类型字符串&#x1f50a;数字&#x1f50a;布尔值&#x1f50a;数组&#x1f50a;对象&#x1f50a;Null ☃️JSON对象&#x1f50a;访问JSON对象的值&a…

bat脚本执行py文件

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

【Python】基础练习题_组合数据类型_2

dictMenu f’卡布奇洛’:32,‘摩卡’:30,‘抹茶蛋糕’:28,‘布朗尼’:26}&#xff0c; dictMenu 中存放了你的双人下午套餐&#xff08;包括咖啡2份和点心2份)的价格,请编写程序,让Python帮忙计算并输出消费总额。 dictMenu {卡布奇洛: 32, 摩卡: 30, 抹茶蛋糕: 28, 布朗尼: 2…

配置zabbix-proxy主动式

IP地址对应关系如下&#xff1a; zabbix-server122.9.8.21zabbix-proxy122.9.4.102zabbix-agent2116.63.9.109 一、 安装zabbix-server https://blog.csdn.net/qq_50247813/article/details/132131774 二、 安装zabbix-proxy a. 安装zabbix源 rpm -Uvh https://repo.zabbix…

【VROC】看Intel VROC如何给NVMe SSD做RAID

在当今对硬盘性能要求越来越高的环境中&#xff0c;SATA和SAS接口由于自身的限制&#xff0c;其性能很难突破600MiB/s的瓶颈。因此&#xff0c;对于需要更高底层硬件性能的行业&#xff0c;如数据库等&#xff0c;对NVMe盘的需求越来越迫切。然而&#xff0c;NVMe盘直通到CPU&a…

Mysql8.1.0 安装问题-缺少visual studio 2019x64组件

缺少visual studio x64组件的问题 使用Mysql8以上的安装包mysql-8.1.0-winx64.msi进行安装&#xff0c; 提示缺少visual studio 2019 x64可再发行组件 在微软官网下载vc可再发行程序包 Microsoft Visual C 可再发行程序包最新支持的下载 在Visual Studio 2015、2017、2019 和…

【Java安全】Java反射机制-成员变量的赋值与取值

文章目录 前言利用反射机制获取类的成员变量利用反射机制获取类的成员方法总结前言 Java反射(Reflection)是Java非常重要的动态特性,通过使用反射我们不仅可以获取到任何类的成员方法(Methods)、成员变量(Fields)、构造方法(Constructors)等信息,还可以动态创建Java类实例、…

12 网关实战:Spring Cloud Gateway基础理论

为什么需要网关? 传统的单体架构中只有一个服务开放给客户端调用,但是微服务架构中是将一个系统拆分成多个微服务,那么作为客户端如何去调用这些微服务呢?如果没有网关的存在,只能在本地记录每个微服务的调用地址。 无网关的微服务架构往往存在以下问题: 客户端多次请求…

ERRO报错

无法下载nginx 如下解决&#xff1a; 查看是否有epel 源 安装epel源 安装第三方 yum -y install epel-release.noarch NGINX端口被占用 解决&#xff1a; 编译安装的NGINX配置文件在/usr/local/ngin/conf 修改端口

Vue组件的几种通信方式

这里写目录标题 Vue组件的几种通信&#xff08;数据传递&#xff09;方式非父子组件间通信&#xff08;Bus事件总线&#xff09;介绍实例 非父子通信-provide&inject1.作用2.场景3.语法4.注意 父子组件间的通信固定props属性名&#xff08;v-model&#xff09;介绍实例 不固…