字符串(4题)

news2024/9/25 1:23:32

目录

1.最长公共前缀

2.最长回文串

3.二进制求和

4.字符串相乘


1.最长公共前缀

. - 力扣(LeetCode)

class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) {
        string ret;
        int cur = 0;
        while(1)
        {
            if(strs[0].size() == cur)return ret;
            char tmp = strs[0][cur];
            for(int i = 0; i < strs.size();i++)
            {
                if(strs[i].size() == cur)return ret;
                if(strs[i][cur] != tmp)return ret;
            }
            ret += tmp;
            cur++;
        }
        
    }
};

2.最长回文串

. - 力扣(LeetCode)

class Solution {
public:
    string longestPalindrome(string s) {
        int begin = 0;
        int len = 0;
        for(int i = 0; i < s.size(); i++)
        {
            int left = i;
            int 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;
            } 
            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)

class Solution {
public:
    string addBinary(string a, string b) {
        int sizea = a.size() - 1;
        int sizeb = b.size() - 1;
        int n = 0;
        string ret;
        int up = 0;
        while (n <= sizea || n <= sizeb)
        {
            int sa = 0;
            int sb = 0;
            if (n <= sizea)
            {
                sa = a[sizea - n] - '0';
            }
            if (n <= sizeb)
            {
                sb = b[sizeb - n] - '0';
            }
            int Add = sa + sb + up;
            up = 0;
            if (Add < 2)
            {
                ret += Add + '0';
            }
            else
            {
                ret += Add + '0' - 2;
                up = 1;
            }
            Add = 0;
            n++;
        }
        if (up)ret += up + '0';
        reverse(ret.begin(), ret.end());
        return ret;
    }
};

4.字符串相乘

. - 力扣(LeetCode)

class Solution {
public:
    string multiply(string num1, string num2) {
        string s1 = num1;
        string s2 = num2;
        int size1 = s1.size();
        int size2 = s2.size();
        reverse(s1.begin(),s1.end());
        reverse(s2.begin(),s2.end());
        vector<int> tmp(size1 + size2 - 1,0);
        for(int i = 0; i < size1; i++)
        {
            for(int j = 0; j < size2; j++)
            {
                tmp[i+j] += (s1[i]-'0')*(s2[j]-'0');
            }
        }
        string ret;
        int up = 0;
        for(int i = 0; i < tmp.size(); i++)
        {
            ret += (tmp[i]+up)%10 + '0';
            up = (tmp[i]+up)/10;
        }
        if(up)ret += up + '0';
        while(ret.back() == '0' && ret.size() > 1)
        {
            ret.pop_back();
        }
        reverse(ret.begin(),ret.end());
        return ret;
    }
};

        这题我们使用无进位相加的方法。

        先将字符串逆置,方便处理

        我们将乘出来每一位的数值先保留,等到结束后再相加。

         然后创建一个整型数组,我们所需数组长度为两个字符串长度之和-1,两个数不同位上相乘的结果可以存在这两个数下标之和对应的数组位置。

        最后我们处理前导0,由于我们先逆置过了,因此字符串ret末尾的位置是高位,将0去除即可,最后逆置回来

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

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

相关文章

YOLOv8改进 | 模块缝合 | C2f 融合REPVGGOREPA提升检测性能【详细步骤 完整代码】

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 专栏目录 &#xff1a;《YOLOv8改进有效…

记一种常用的实时数据同步方案:Canal+Kafka+Flume

记一种常用的实时数据同步方案&#xff1a;CanalKafkaFlume 在当今数据驱动的业务环境中&#xff0c;数据同步是确保系统间数据一致性的关键环节。一种高效、稳定且可扩展的数据同步方案对于支撑企业的数据处理和分析需求至关重要。本文将介绍一种结合了Canal、Kafka和Flume的…

【unity游戏开发】Blender导出到Unity,带texture

【背景】 上一篇完成了将Mixamo的动画应用到blender的fbx模型中。但是默认配置导出fbx又导入Unity后发现Texture都没了(mesh和rig都在)。如何将Texture也一并导入呢? 【要点】 Blender导出后的FBX展开Mesh的名称不是文件名称,而是同Blender中的Mesh名称。可以根据这一点…

【案例66】支付指令客户端崩溃分析全过程

问题现象 月底&#xff0c;需要给人员开工资&#xff0c;但是财务人员在点击【支付状态指令】节点&#xff0c;点击状态确认后&#xff0c;系统直接崩溃&#xff0c;页面都卡掉。人员已经2天未发工资&#xff0c;情况比较紧急。 更改Uclient模式从分离模式改为嵌入模式&#x…

【linux002】目录操作命令篇 - ls 命令

文章目录 1、基本用法2、常见选项3、举例演示4、注意事项 ls 命令在 Linux 中用于列出目录内容。它有许多选项和参数可以用来调整显示的格式和内容。 1、基本用法 ls [选项] [文件或目录]2、常见选项 -a 或 --all&#xff1a;显示所有文件&#xff0c;包括以点.开头的隐藏文件…

【最新华为OD机试E卷】最左侧冗余覆盖子串(100分)多语言题解-(Python/C/JavaScript/Java/Cpp)

🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-E/D卷的三语言AC题解 💻 ACM金牌🏅️团队| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,…

第一个Java程序 - Java学习日记 DAY1

第一个Java程序 在文件夹中&#xff0c;新建一个文本文件 重命名为&#xff1a;helloworld.java 用记事本打开此文件&#xff0c;编写第一行 此时&#xff0c;我们创建了一个公开的类&#xff0c;类名叫helloworld&#xff0c;需要注意类名要和文件名的名字一致 第二行是公开…

MySQL record

更改密码&#xff1a; alter user rootlocalhost identified with mysql_native_password by ‘123456’; 注意&#xff1a; 在命令行方式下&#xff0c;每条MySQL的命令都是以分号结尾的&#xff0c;如果不加分号&#xff0c;MySQL会继续等待用户输入命令&#xff0c;直到MyS…

10.7 URL

万维网 真题

前端面试体——项目介绍以及SPA介绍

谈谈你开发的项目背景与、架构和技术栈 项目背景 假设我们正在开发一个名为“智慧旅游助手”的Web平台。该平台旨在为用户提供一站式的旅游服务&#xff0c;包括目的地推荐、酒店预订、行程规划、在线购票&#xff08;如门票、机票&#xff09;、旅游攻略分享以及基于地理位置…

电脑图片只显示图标不显示图片,但是可以打开看,就是不能预览

电脑图片只显示图标不显示图片&#xff0c;但是可以打开看&#xff0c;就是不能预览 例如&#xff1a;不能显示出图片内容 解决方法&#xff1a;我的电脑&#xff08;计算机&#xff09;-右键-属性-高级系统设置-高级-性能-设置-找到&#xff08;显示缩略图&#xff0c;而不是…

实战赢家:为何传统边缘分割方法比深度学习更有效?附源码+教学+数据

前言 传统的边缘分割方法&#xff0c;如Canny边缘检测和Sobel算子&#xff0c;已经在计算机视觉领域中使用了数十年。这些方法依赖于图像梯度和边缘强度来识别边缘&#xff0c;通过一系列精心设计的滤波器和阈值化步骤来实现高效的边缘检测。虽然这些方法较为简单&#xff0c;…

Linux malloc内存分配实现原理

目录 一、用户进程虚拟内存空间布局 二、malloc工作原理 2.1 malloc实现流程 2.1.1 brk方式申请内存 2.1.2 mmap方式分配内存 2.2 核心代码 2.3 malloc分配物理内存的时机 2.4 malloc分配的实际内存大小 三、虚拟内存与物理内存 3.1 如何建立映射 3.2 分配物理内存 …

传统CV算法——基于 SIFT 特征点检测与匹配实现全景图像拼接

全景图像拼接实现 定义 Stitcher 的类&#xff0c;用于实现两张图片的拼接。使用的技术是基于 SIFT 特征点检测与匹配&#xff0c;以及利用视角变换矩阵来对齐和拼接图像。 import numpy as np import cv2class Stitcher:#拼接函数def stitch(self, images, ratio0.75, repro…

Kubernetes 简介及部署方法

目录 1 Kubernetes 简介及原理 1.1 应用部署方式演变 1.2 容器编排应用 1.3 kubernetes 简介 1.4 K8S的设计架构 1.5 K8S 各组件之间的调用关系 1.6 K8S 的 常用名词感念 1.7 k8S的分层架构 2 K8S 集群环境搭建 2.1 k8s 中容器的管理方式 2.2 k8s中使用的几种管理容器的介绍 3 …

欧洲应用市场的特点

欧洲应用市场是一个充满活力和多样性的景观&#xff0c;其特点是复杂性和巨大的潜力。仅在27个欧盟&#xff08;EU&#xff09;国家就有5亿多人&#xff0c;该地区为希望扩大影响力的应用程序开发人员和企业提供了重要机会。然而&#xff0c;进入这个市场需要了解其独特的特征&…

幻觉问题综述

https://arxiv.org/pdf/2202.03629 分类 内在幻觉&#xff1a;生成的输出与源内容相矛盾 外部幻觉&#xff1a;生成的输出无法从源内容中验证 数据引发的幻觉&#xff08;来源不同引发分歧&#xff09; 训练和推理中的幻觉&#xff08;编码器不能很好的表征&#xff0c;解码…

【云原生-Docker】docker、docker-compose离线安装【包括dokcer、docker-compose资源下载】

资源资源下载在线下载百度网盘下载csdn下载 解压上传文件 配置系统配置配置 docker-compose安装验证 资源 资源下载 在线下载 下载地址&#xff1a;https://download.docker.com/linux/static/stable/x86_64/根据不同系统版本下载不同的docker版本在线下载&#xff1a;wget …

网络编程 0904作业

作业 1、多进程多线程并发服务器&#xff0c;再实现一遍&#xff08;重点模型&#xff09; 多进程并发服务器 多进程服务器 PIDserver.c 代码 #include <myhead.h> #define SERPORT 7777 #define SERIP "192.168.19.128" #define BACKLOG 10void hande(int…

【数据结构与算法 | 搜索二叉树篇 力扣篇】力扣530, 501

1. 力扣530&#xff1a;二叉搜索树的最小绝对差 1.1 题目&#xff1a; 给你一个二叉搜索树的根节点 root &#xff0c;返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数&#xff0c;其数值等于两值之差的绝对值。 示例 1&#xff1a; 输入&#xff1a;root [4,…