【算法专题十一】字符串

news2025/5/13 3:14:30

文章目录

  • 1. leetcode.14.最长公共前缀
    • 1.1 题目
    • 1.2 思路
    • 1.3 代码
  • 2. leetcode.5.最长回文字串
    • 2.1 题目
    • 2.2 思路
    • 2.3 代码
  • 3. leetcode.67.二进制求和
    • 3.1 题目
    • 3.2 思路
    • 3.3 代码
  • 4. leetcode.43.字符串相乘
    • 4.1 题目
    • 4.2 思路
    • 4.3 代码

1. leetcode.14.最长公共前缀

1.1 题目

题目链接
在这里插入图片描述

1.2 思路

在这里插入图片描述
在这里插入图片描述

1.3 代码

class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) {
        string ret = strs[0];
        for(int i = 0; i < strs.size(); i++)
        {
            ret = HanShu(ret, strs[i]);
        }
        return ret;
    }
    string HanShu(string& s1, string& s2)
    {
        int i = 0;
        while(i < min(s1.size(), s2.size()) && s1[i] == s2[i])
        {
            i++;
        }
        return s1.substr(0, i);
    }
};

2. leetcode.5.最长回文字串

2.1 题目

题目链接
在这里插入图片描述
在这里插入图片描述

2.2 思路

在这里插入图片描述
在这里插入图片描述

2.3 代码

class Solution {
public:
    string longestPalindrome(string s) {
        int begin = 0, len = 0;
        for(int i = 0; i < s.size(); i++)
        {
            // 1. 先做奇数次遍历
            int left = i, right = i;
            while(left >= 0 && right < s.size() && s[left] == s[right])
            {
                left--;
                right++;
                if(right - left - 1 > len)
                {
                    begin = left + 1;
                    len = right - left - 1;
                }
            }
            // 2. 再做偶数次遍历
            left = i, right = i + 1;
            while(left >= 0 && right < s.size() && s[left] == s[right])
            {
                left--;
                right++;
                if(right - left - 1 > len)
                {
                    begin = left + 1;
                    len = right - left - 1;
                }
            }
        }
        return s.substr(begin, len);
    }
};

3. leetcode.67.二进制求和

3.1 题目

题目链接
在这里插入图片描述

3.2 思路

在这里插入图片描述
在这里插入图片描述

3.3 代码

class Solution {
public:
    string addBinary(string a, string b) {
        string ret;
        int cur1 = a.size() - 1, cur2 = b.size() - 1, t = 0;
        while(cur1 >= 0 || cur2 >= 0 || t > 0)
        {
            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. leetcode.43.字符串相乘

4.1 题目

题目链接
在这里插入图片描述
在这里插入图片描述

4.2 思路

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.3 代码

class Solution {
public:
    string multiply(string n1, string n2) {
        // 1. 首先进行 不进位相乘
        int m = n1.size(), n = n2.size();
        reverse(n1.begin(), n1.end());
        reverse(n2.begin(), n2.end());
        vector<int> tmp(m + n - 1);
        for(int i = 0; i < m; i++)
        {
            for(int j = 0; j < n; j++)
            {
                tmp[i + j] += (n1[i] - '0') * (n2[j] - '0');
            }
        }
        // 2. 处理进位
        string ret;
        int cur = 0, t = 0;
        while(cur < m + n - 1 || t != 0)
        {
            if(cur < m + n - 1) t += tmp[cur++];
            ret += t % 10 + '0';
            t /= 10;
        }
        // 3. 处理前导0
        while(ret.size() > 1 && ret.back() == '0') ret.pop_back();
        reverse(ret.begin(), ret.end());
        return ret;
    }
};

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

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

相关文章

美化IDEA注释:Idea 中快捷键 Ctrl + / 自动注释的缩进(避免添加注释自动到行首)以及 Ctrl + Alt + l 全局格式化代码的注释缩进

打开 Settings 界面&#xff0c;依次选择 Editor -> Code Style -> Java&#xff0c;选择 Code Generation&#xff0c; 取消 Line comment at first column 和 Block comment at first column 的勾选即可&#xff0c; 1、Line comment at first column (行注释在第一列…

赛灵思 XCZU11EG-2FFVC1760I XilinxFPGAZynq UltraScale+ MPSoC EG

XCZU11EG-2FFVC1760I 是 Zynq UltraScale MPSoC EG 系列中性能最强的器件之一&#xff0c;集成了四核 ARM Cortex-A53 应用处理器、双核 Cortex-R5 实时处理器与 Mali-400 MP2 GPU&#xff0c;并结合了 653,100 个逻辑单元与丰富的片上存储资源&#xff0c;可满足高性能计算、A…

Android Camera HAL v3 and Video4Linux 2

《小驰行动派的知识星球》 ———————————————— 推荐阅读&#xff1a; 关于博主 《小驰Camera私房菜》小册目录 采用v4l2loopback来实现 虚拟Camera Camera基础及一些基本概念 Android Camera 学习路线 | 个人推荐 Android Camera开发系列&#xff08;干货满满&a…

基于pyqt的上位机开发

目录 安装依赖 功能包含 运行结果 安装依赖 pip install pyqt5 pyqtgraph pyserial 功能包含 自动检测串口设备&#xff0c;波特率选择/连接断开控制&#xff0c;数据发送/接收基础框架&#xff0c;实时绘图区域&#xff08;需配合数据解析&#xff09; ""&q…

CentOS 7 系统下安装 OpenSSL 1.0.2k 依赖问题的处理

前面有提到过这个openssl的版本冲突问题&#xff0c;也是在这次恢复服务器时遇到的问题&#xff0c;我整理如下&#xff0c;供大家参考。小小一个软件的安装&#xff0c;挺坑的。 一、问题 项目运行环境需要&#xff0c;指定PHP7.0.9这个版本&#xff0c;但是‌系统版本与软件…

vue修改了node_modules中的包,打补丁

1、安装patch npm i patch-package 安装完成后&#xff0c;会在package.json中显示版本号 2、在package.json的scripts中增加配置 "postinstall": "patch-package" 3、执行命令 npx patch-package 修改的node_modules中的包的名称 像这样 npx patch-packag…

[matlab]private和+等特殊目录在新版本matlab中不允许添加搜索路径解决方法

当我们目录包含有private,或者时候matlab搜索目录不让添加&#xff0c;比如截图&#xff1a; 在matlab2018以前这些都可以加进去后面版本都不行了。但是有时候我们必须要加进去才能兼容旧版本matlab库&#xff0c;比如mexopencv库就是这种情况。因此我们必须找到一个办法加进去…

OpenTelemetry 介绍

文章目录 1. 概述什么是OpenTelemetry发展历史与背景主要特点与优势2. 核心概念追踪(Tracing)指标(Metrics)日志(Logs)行李(Baggage)3. 主要组件API层SDK层数据收集器(Collector)导出器(Exporters)OTLP(OpenTelemetry Protocol)4. 集成方式语言支持(SDK)自动与手动插桩常见框…

【连载14】基础智能体的进展与挑战综述-多智能体系统设计

基础智能体的进展与挑战综述 从类脑智能到具备可进化性、协作性和安全性的系统 【翻译团队】刘军(liujunbupt.edu.cn) 钱雨欣玥 冯梓哲 李正博 李冠谕 朱宇晗 张霄天 孙大壮 黄若溪 在基于大语言模型的多智能体系统&#xff08;LLM-MAS&#xff09;中&#xff0c;合作目标和合…

blender云渲染指南2025版

一、云渲染核心概念 Blender云渲染是将本地渲染任务迁移到云端服务器集群的技术&#xff0c;通过分布式计算实现效率提升100倍以上的解决方案&#xff0c;其核心逻辑是&#xff1a;用户上传Blender项目文件至【渲染101】等云平台&#xff0c;云端调用高性能服务器&#xff08;…

Mysql-OCP PPT课程讲解并翻译

#跳过介绍&#xff0c;直接从干货开始记录 第一章 安装mysql windows安装

加速项目落地(Trae编辑器)

目录 vscode安装python支持 vscode常用插件 Trae编辑器 两个界面合成 补充&#xff08;QT开发的繁琐&#xff09; AI编程哪家强&#xff1f;Cursor、Trae深度对比&#xff0c;超详细&#xff01; - 知乎 Trae兼容vscode的插件&#xff0c;我们可以先在vscode里面装好再一…

配置 Web 服务器练习

一、要求 1.通过https://ip 可以访问到网站首页 2.通过 https://ip/private/ 实现用户访问控制&#xff0c;仅允许已经添加的 tom&#xff0c;jerry 能够访问到 private 子路径的界面 3.通过 https://ip/vrit/ 实现能够访问到将系统 /nginx/virt 目录下的网页文件&#xff0…

Python程序,输入IP,扫描该IP哪些端口对外是开放的,输出端口列表

#!/usr/bin/env python # -*- coding: utf-8 -*-""" IP端口扫描程序 输入IP地址&#xff0c;扫描该IP哪些端口对外是开放的&#xff0c;输出端口列表 """import socket import sys import concurrent.futures import ipaddress from tabulate im…

OpenCv实战笔记(3)基于opencv实现调用摄像头并实时显示画面

一、实现效果 二、实现原理 使用 OpenCV 打开摄像头&#xff0c;持续捕获视频帧&#xff0c;并在一个窗口中实时显示这些帧&#xff0c;直到用户按下 ESC 键退出。整体流程&#xff1a;打开摄像头&#xff08;cv::VideoCapture&#xff09;>创建图像显示窗口&#xff08;cv…

upload-labs靶场通关详解:第四关

一、分析源代码 可以看出这一关仍然是黑名单验证&#xff0c;但是它禁止了更多的后缀。像php3&#xff0c;php4这类后缀也被加入了黑名单&#xff0c;第三关的方法在这里显然就失效了。那么我们想一想&#xff0c;既然配置文件中存在将php3当作php来执行的功能&#xff0c;那么…

openharmony系统移植之gpu mesa3d适配

openharmony系统移植之gpu mesa3d适配 文章目录 openharmony系统移植之gpu mesa3d适配1. 环境说明2. gpu内核panfrost驱动2.1 使能panfrost驱动2.2 panfrost dts配置 3. buildroot下测试gpu驱动3.1 buildroot配置编译 4. ohos下mesa3d适配4.1 ohos下mesa3d编译调试4.1.2 编译4.…

Linux58 ssh服务配置 jumpserver 测试双网卡 为何不能ping通ip地址

判断为NAT模式网卡 能ping 通外网 ens34为仅主机模式网卡 [rootlocalhost network-scripts]# ip route show default default via 10.1.1.254 dev ens33 proto static metric 100 10.0.0.0/8 dev ens33 proto kernel scope link src 10.1.1.37 metric 100 11.0.0.0/8 dev…

web 自动化之 selenium+webdriver 环境搭建及原理讲解

文章目录 一、web 自动化测试学习说明二、什么 web 自动化测试三、selenium 简介四、web自动化测试环境搭建五、web 自动化测试第一个脚本六、selenium 原理及源码讲解 一、web 自动化测试学习说明 进阶 web 自动化测试学习&#xff1a;掌握 python 编程基础 二、什么 web 自…

2025ISCC练武校级赛部分题解WP

Web 战胜卞相壹 <!-- 路过的酒罐王柯洁九段说&#xff1a; --> <!-- 会叠棋子有什么用&#xff01;你得在棋盘内战胜他&#xff01;我教你个定式&#xff0c;要一直记得&#xff01;一直&#xff01; --> <!-- SGF B[ae];B[ce];B[df];B[cg];B[ag];B[ai];B[ci];…