算法—字符串操作

 

394. 字符串解码 - 力扣(LeetCode)

class Solution {
public:string longestCommonPrefix(vector<string>& strs) {  string ret=strs[0];//***1***记得先要初始化ret,作为第一个比较值for(int i=0;i<strs.size();i++){ret=foundcommon(ret,strs[i]);        }return ret;}string foundcommon(string str1,string str2){int len_min=min(str1.size(),str1.size());int i=0;for(i=0;i<len_min;i++){if(str1[i]!=str2[i]) break;}return str1.substr(0,i);}
};

. - 力扣(LeetCode)

class Solution {
public:string longestPalindrome(string s) {//枚举所有子串O(n^2),回文子串的特点,中心轴对称,int begin=0; int end=0; int n=s.size();int len=0;for(int i=0;i<n;i++){int left=i; int right=i;while(left>=0&&right<n&&s[left]==s[right]){left--;right++;}if(right-left+1>len){len=right-left+1;begin=left;end=right;}}for(int i=0;i<n;i++){int left=i; int right=i+1;while(left>=0&&right<n&&s[left]==s[right]){left--;right++;}if(right-left+1>len){len=right-left+1;begin=left;end=right;}}return s.substr(begin,len);}
};

https://leetcode.cn/problems/add-binary/submissions/524491385/icon-default.png?t=N7T8https://leetcode.cn/problems/add-binary/submissions/524491385/

67. 二进制求和 - 力扣(LeetCode) 

class Solution {
public:string addBinary(string a, string b) {string ret;int cur1=a.size()-1;int cur2=b.size()-1;int t=0;//保留进位while(cur1>=0||cur2>=0||t){if(cur1>=0) t+=a[cur1--]-'0';if(cur2>=0) t+=b[cur2--]-'0';ret+=t%2+'0';//低位在left,需要反转t/=2;//进位}reverse(ret.begin(),ret.end());return ret;}};

43. 字符串相乘 - 力扣(LeetCode)

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> tmp(m+n);//实际只用m+n-1个位数,也就是0~m+n-2,对于无进位相加。//先无进位相乘cout<<m<<"  "<<n<<endl;for(int i=0;i<m;i++){for(int j=0;j<n;j++){tmp[i+j]+=(num1[i]-'0')*(num2[j]-'0');//**1**+=不是=,这里是累加cout<<tmp[i+j]<<endl;}}for(int i=0;i<m+n-1;i++){cout<<tmp[i]<<endl;}//处理进位string ret;int t=0;int i=0;while(i<m+n-1||t){//**3**i<m+n-1:避免ret什么都不放,不用tmp[i]!=0:可能有问题,111,100;直接结束循环t+=tmp[i++];ret+=t%10+'0';t/=10;}//处理ret最后插入的0,因为是倒序,所以无法此0是前导0,不能统计while(ret.size()>1&&ret.back()=='0') ret.pop_back();//**2**size()=1时候,只有一位,此位为0,所以不为前导0.reverse(ret.begin(),ret.end());return ret;}
};

394. 字符串解码 - 力扣(LeetCode)

class Solution {
public:string decodeString(string s) {stack<int> nums;stack<string> st;st.push("");int i=0; int n=s.size();while(i<n){if('0'<=s[i]&&s[i]<='9'){int tmp=s[i++]-'0';cout<<"tmp:"<<tmp<<endl;cout<<s[i]<<endl;while('0'<=s[i]&&s[i]<='9') {tmp=tmp*10+s[i++]-'0';//***1**提取数组:不是+=,通过变换也不行,是=cout<<tmp<<endl;}nums.push(tmp);cout<<"nums栈顶"<<nums.top()<<endl;//cout<<"st栈顶"<<st.top()<<endl;}else if(s[i]=='['){cout<<"进入"<<endl;i++;//提取字母string str1="";cout<<s[i]<<endl;while('a'<=s[i]&&s[i]<='z'){//牢记提取一串子数组的话,判断条件两个必须分开写str1+=s[i++];cout<<str1<<endl;}// cout<<str1<<endl;st.push(str1);// cout<<"nums栈顶"<<nums.top()<<endl;cout<<"st栈顶"<<st.top()<<endl;}else if(s[i]==']'){//提取最内层的字符串int k=nums.top();nums.pop();string str1=st.top();st.pop();string str2="";while(k--){str2+=str1;}st.top()+=str2;i++;//cout<<"nums栈顶"<<nums.top()<<endl;// cout<<"st栈顶"<<st.top()<<endl;}else{while('a'<=s[i]&&s[i]<='z')  st.top()+=s[i++];// cout<<"nums栈顶"<<nums.top()<<endl;// cout<<"st栈顶"<<st.top()<<endl;}}return st.top();}
};

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

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

相关文章

Zookeeper 详解:分布式协调服务的核心概念与实践

Zookeeper 详解&#xff1a;分布式协调服务的核心概念与实践 Apache Zookeeper 是一个分布式协调服务&#xff0c;广泛用于分布式应用程序的配置管理、服务发现、集群管理等。它提供了简单的分布式锁服务和命名服务&#xff0c;使开发者能够更加方便地构建高可靠性、高可用性的…

在 Windows 资源管理器中打开 FTP 站点终极解决方法 ftp打开方式更改为资源管理器

日常工作中&#xff0c;经常会用到FTP&#xff0c;一般情况下&#xff0c;FTP站点在IE中&#xff08;尤其是IE7以后版本&#xff09;打开&#xff0c;默认都不是以文件夹视图方式打开的&#xff0c;这时IE也会给你提示“若要在 Windows 资源管理器中查看此 FTP 站点&#xff0c…

Vue Router——hash模式和 history模式

在 Vue.js 中&#xff0c;Vue Router 是官方提供的路由管理器&#xff0c;它允许你以单页面应用&#xff08;SPA&#xff09;的方式构建你的Vue应用。Vue Router 支持两种路由模式&#xff1a;hash 模式和 history 模式。这两种模式的主要区别在于它们如何与浏览器的历史记录&a…

鸿蒙? 车载?Flutter? React Native? 为什么我劝你三思,说点不一样的

本文首发于公众号“AntDream”&#xff0c;欢迎微信搜索“AntDream”或扫描文章底部二维码关注&#xff0c;和我一起每天进步一点点 引言 当今信息技术领域日新月异&#xff0c;各种新技术和新平台层出不穷。鸿蒙&#xff08;HarmonyOS&#xff09;、Flutter、以及车载应用开发…

使用 Scapy 库编写 ICMP 不可达攻击脚本

一、介绍 ICMP不可达攻击是一种利用ICMP&#xff08;Internet Control Message Protocol&#xff09;不可达消息来干扰或中断目标系统的网络通信的攻击类型。通过发送伪造的ICMP不可达消息&#xff0c;攻击者可以诱使目标系统认为某些网络路径或主机不可达&#xff0c;从而导致…

前端开发高频面试题

好的&#xff0c;以下是对您提出的问题的详细回答&#xff1a; 说说vue动态权限绑定渲染列表&#xff08;权限列表渲染&#xff09; Vue中动态权限绑定渲染列表通常涉及以下步骤&#xff1a; 首先&#xff0c;通过API请求从服务器获取当前用户的权限数据。在Vue组件中&#xff…

《数据库原理与应用》

计算题 设有关系模式R(ABCDEF),F={ A→BC,CD→E,B→DA }1)求R的所有候选码。2)R最高属于第几范式 AE,BE 三个关系如下:教学管理系统包括下面3个表:Students (Sno, Sname, Sex, Birthday, Enrollyear, Speciality, Dno) Courses (Cno, Cname, Period, Credit) SC (…

二叉树及其在C语言中的实现A

一、引言 二叉树是数据结构中一种非常基础且重要的树形结构&#xff0c;它的每个节点最多有两个子节点&#xff0c;通常被称为左子节点和右子节点。二叉树在计算机科学中有着广泛的应用&#xff0c;如搜索、排序、存储数据等。本文将详细介绍二叉树的基本概念、特性以及在C语言…

Linux: ubi rootfs 故障案例 (1)

文章目录 1. 前言2. ubi rootfs 故障现场3. 故障分析与解决4. 参考资料 1. 前言 限于作者能力水平&#xff0c;本文可能存在谬误&#xff0c;因此而给读者带来的损失&#xff0c;作者不做任何承诺。 2. ubi rootfs 故障现场 问题故障内核日志如下&#xff1a; Starting ker…

elasticsearch安装与使用(2)-基于term匹配的简单搜索引擎搭建

把一篇pdf论文解析后&#xff0c;放入es数据库中&#xff0c;建立倒排索引表&#xff0c;并实现简单搜索。 1、pdf论文解析(英文) 安装pdf解析包 pip install pdfminer.sixdef extract_text_from_pdf(filename, page_numbersNone, min_line_length1):从pdf文件中提取文字:pa…

btstack协议栈实战篇--GAP Link Key Management

btstack协议栈---总目录-CSDN博客 目录 1.GAP 链接密钥逻辑 2.蓝牙逻辑 3.主应用程序设置 4.log信息 展示了如何遍历存储在 NVS 中的经典链接密钥&#xff0c;链接密钥是每个设备-设备绑定的。如果蓝牙控制器可以交换&#xff0c;例如在桌面系统上&#xff0c;则每个控制器都需…

App UI 风格,引领时尚

App UI 风格&#xff0c;引领时尚

R语言探索与分析18-基于时间序列的汇率预测

一、研究背景与意义 汇率是指两个国家之间的货币兑换比率&#xff0c;而且在国家与国家的经济交流有着举足轻重的作用。随着经济全球化的不断深入&#xff0c;在整个全球经济体中&#xff0c;汇率还是一个评估国家与国家之间的经济状况和发展水平的一个风向标。汇率的变动会对…

【前端】响应式布局笔记——媒体查询

一、媒体查询 为不同尺寸的屏幕设定不同的css样式&#xff08;常用于移动端&#xff09;。 案例1 <style>.content{width: 400px;height: 400px;border: 1px solid;}media screen and (min-device-width:200px) and (min-device-width:300px) {.content{background: r…

Linux基础指令文件管理003

本章讲述如何查看文件以及修改权限。 操作系统&#xff1a; CentOS Stream 9 操作步骤&#xff1a; 查看文件&#xff1a; 指令cat [rootlocalhost a]# cat 1.txt 123 [rootlocalhost a]# 指令less [rootlocalhost a]# less 1.txt 123 ~ ~ ~ ~ ~ ~ ~ ~指令more [rootloc…

用户价值模型-RFM模型

一、RFM模型是什么 说到用户价值模型&#xff0c;我们常常会用的就是&#xff0c;RFM用户价值模型&#xff0c;它是一种常用于客户分析和营销策略制定的模型。 RFM代表的意思是&#xff1a; 1&#xff09;R(Recency)&#xff1a;最近一次购买时间&#xff0c;也就是客户最近一…

零基础入门学用Arduino 第二部分(一)

重要的内容写在前面&#xff1a; 该系列是以up主太极创客的零基础入门学用Arduino教程为基础制作的学习笔记。个人把这个教程学完之后&#xff0c;整体感觉是很好的&#xff0c;如果有条件的可以先学习一些相关课程&#xff0c;学起来会更加轻松&#xff0c;相关课程有数字电路…

构建智能汽车新质生产力丨美格智能亮相2024高通汽车技术与合作峰会

近日&#xff0c;以“我们一起&#xff0c;驭风前行”为主题的2024高通汽车技术与合作峰会在无锡国际会议中心隆重举行。作为高通公司的战略合作伙伴&#xff0c;美格智能受邀全程参与此次汽车技术与合作峰会。在峰会现场&#xff0c;美格智能产品团队隆重展示了多款基于高通平…

vscode中jupyter notebook执行bash命令,乱码解决方法

问题描述 使用vscode中使用jupyter notebook执行bash命令时,不管是中文还是英文,输出均是乱码 但是使用vscode的terminal执行同样的命令又没有问题,系统自带的cmd也没有问题。 最终解决后的效果如下: ## 问题分析 默认vscode会选择使用cmd执行shell, 但是通过vscode的设…

Vue3相关语法内容,组件传值

1、Vue3相关语法内容 1、赋值语法&#xff08;ref&#xff0c;reactive&#xff09; 1.1、ref 、isRef、 shallowRef、triggerRef、customRef 支持所有的类型&#xff08;原因没有泛型约束&#xff09; ##### 1、ref // 简单数据类型 可以直接通过 赋值 type M {name:string…