力扣刷题记录(25)LeetCode:583、72、647

583. 两个字符串的删除操作

题目说可以删除任意一个字符串中的字符,实际上就是在求两个字符串的公共子序列。求得公共子序列后与字符串长度做个减法即可得需要的步数。

class Solution {
public:
    //求最长子数组
    int minDistance(string word1, string word2) {
        vector<vector<int>> dp(word1.size()+1,vector<int>(word2.size()+1,0));
        int maxLength=0;
        for(int i=1;i<=word1.size();i++)
        {
            for(int j=1;j<=word2.size();j++)
            {
                if(word1[i-1]==word2[j-1])
                    dp[i][j]=dp[i-1][j-1]+1;
                
                else
                    dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
                maxLength=max(maxLength,dp[i][j]);
            }
        } 
        return word1.size()+word2.size()-2*maxLength;
    }
};

72. 编辑距离

 这题还是分两种情况来写递推公式,当前字符相等或者不相等

示例:word1="horse"  word2="ros"

1.当前字符相等

        比如说ho、ro,此时字符就相等,那么所需的操作步数就等于前一个字符所需要的步数,因为当前字符已经相等不需要对它进行操作。即dp[i][j]=dp[i-1][j-1]

2.当前字符不相等

        可以对当前字符进行3中操作

  • 替换

        比如hor、ros,此时就可以将r直接替换成s,dp[i][j]=dp[i-1][j-1]+1

  • 删除

        比如hor、ro,此时就可以将r直接删除,dp[i][j]=dp[i-1][j]+1

  • 增加

        比如ho、ros,此时就可以添加一个s,dp[i][j]=dp[i][j-1]+1

     综上,当前字符不相等时,dp[i][j]=min( dp[i-1][j-1] , dp[i-1][j] , dp[i][j-1] ) +1 

class Solution {
public:
    int minDistance(string word1, string word2) {
        vector<vector<int>> dp(word1.size()+1,vector<int>(word2.size()+1,0));
        for(int i=0;i<=word1.size();i++)
        {
            dp[i][0]=i;
            
        }
        for(int j=0;j<=word2.size();j++)
        {
            dp[0][j]=j;
        }
        for(int i=1;i<=word1.size();i++)
        {
            for(int j=1;j<=word2.size();j++)
            {
                if(word1[i-1]==word2[j-1])
                    dp[i][j]=dp[i-1][j-1];
                else
                    dp[i][j]=min(dp[i-1][j-1],min(dp[i][j-1],dp[i-1][j]))+1;
            }
        }
        return dp[word1.size()][word2.size()];
    }
};

647. 回文子串

方法一:暴力求解

class Solution {
public:
    bool huiwen(string s,int start,int end)
    {
        while(start<end)
        {
            if(s[start]!=s[end])
                return false;
            start++;
            end--;
        }
        return true;
    }
    int countSubstrings(string s) {
        int ans=1;
        for(int i=1;i<s.size();i++)
        {
            for(int j=0;j<=i;j++)
            {
                if(huiwen(s,j,i))
                    ans++;
            }
        }
        return ans;
    }
};

 方法二:动态规划

用i、j表示s的索引,dp[i][j]表示区间[j,i]内的字符串是否是回文串。如果s[i]==s[j],那么我们只需要看dp[i-1][j+1]是否是回文串。如果s[i]!=s[j],那么dp[i][j]=false

class Solution {
public:
    int countSubstrings(string s) {
        vector<vector<bool>> dp(s.size(),vector<bool>(s.size(),false));
        int ans=0;
        for(int i=0;i<s.size();i++)
        {
            for(int j=i;j>=0;j--)
            {
                if(s[i]==s[j])
                {
                    if(i-j<2 || dp[i-1][j+1]==true)
                    {
                        dp[i][j]=true;
                        ans++;
                    }
                }
            }
        }
        return ans;
    }
};

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++ 数组详解,很全,很详细

数组 (C) 数组是相同类型的对象序列&#xff0c;它们占据一块连续的内存区。 传统的 C 样式数组是许多 bug 的根源&#xff0c;但至今仍很常用&#xff0c;尤其是在较旧的代码库中。 在新式 C 中&#xff0c;我们强烈建议使用 std::vector 或 std::array&#xff0c;而不是本部…

PPT插件-大珩助手-文字整理功能介绍

删空白行 删除文本中的所有空白行 清理编号 删除文本中的段落编号 清理格式 删除文本中的换行、空格符号 清理艺术 删除文本的艺术字效果 清理边距 删除文本框与文字之间的间隙 软件介绍 PPT大珩助手是一款全新设计的Office PPT插件&#xff0c;它是一款功能强大且实…

1.5 Unity中的数据存储 PlayerPrefs、XML、JSON

Unity中的三种数据存储&#xff1a;数据存储也称为数据持久化 一、PlayerPrefs PlayerPrefs是Unity引擎自身提供的一个用于本地持久化保存与读取的类&#xff0c;以键值对的形式将数据保存在文件中&#xff0c;然后程序可以根据关键字提取数值。 PlayerPrefs类支持3种数据类…

网络信息安全十大隐患,如何做好防范,实践方法

随着互联网的普及和信息技术的飞速发展&#xff0c;网络安全问题日益凸显。网络攻击、网络诈骗、网络病毒等问题时刻威胁着人们的隐私和财产安全。针对这些隐患&#xff0c;广大网友该如何防范呢&#xff1f; 一&#xff1a;黑客攻击 黑客攻击是网络信息安全面临的最大威胁之一…

Beauty algorithm(四)眼影

一、skills 前瞻 略 二、目标区域定位 1、 眼影区域 1、眼部关键点 左侧:36,37,38,39,40,41 右侧:42,43,44,45,46,47 2、计算roi区域的w,h,center 目的调整mask的比列。 FaceRegion left_es, right_es; left_es.w = landmarks.at(39).x - landmarks.at(36).x; left_es.…

Qt重载事件

重载event 事件类型 (EventType) 事件类型是 QEvent 类的一个枚举 &#xff0c;包含了 Qt 能够处理的所有不同类型的事件。这个枚举包括但不限于以下常见类型&#xff1a; QEvent::MouseButtonPress: 鼠标按钮按下事件。QEvent::MouseButtonRelease: 鼠标按钮释放事件。Q…

spring Security源码讲解-WebSecurityConfigurerAdapter

使用security我们最常见的代码&#xff1a; Configuration public class SecurityConfig extends WebSecurityConfigurerAdapter {Overrideprotected void configure(HttpSecurity http) throws Exception {http.formLogin().permitAll();http.authorizeRequests().antMatcher…

音量控制软件sound control mac功能亮点

sound control mac可以帮助用户控制某个独立应用程序的音量&#xff0c;通过每应用音量&#xff0c;均衡器&#xff0c;平衡和音频路由独立控制每个应用的音频&#xff0c;还有整个系统的音量。 sound control mac功能亮点 每个应用程序的音量控制 独立控制应用的数量。 键盘音…

fastadmin学习02-修改后台管理员账号密码

问题 如果是别人部署好的fastadmin网站不知道后台登录地址和账号密码怎么办 后台登录地址 public目录下有一个很奇怪的php就是后台登录地址啦 忘记账号密码 找到fa_admin&#xff0c;fa_是前缀&#xff0c;肯能每个项目不太一样 UPDATE fa_admin set password1d020dee8ec…

(三)其他的输入输出

文章目录 getchar();单个字符输入使用&#xff1a; putchar();单个字符输出(自带换行)使用 puts();字符串输出与printf区别使用 gets();后面补充 代码现象 getchar(); 单个字符输入 使用&#xff1a; 变量 getchar(); 例&#xff1a;char a&#xff1b; a getchar(); put…

WEB 3D技术 three.js 顶点缩放

本文 我们来说 顶点缩放 我们官网搜索 BufferGeometry 下面有一个 scale 函数 例如 我们先将代码写成这样 上面图片和资源文件 大家需要自己去加一下 import ./style.css import * as THREE from "three"; import { OrbitControls } from "three/examples/j…

软件测试|Docker exec命令详细使用指南

简介 Docker exec命令是Docker提供的一个强大工具&#xff0c;用于在正在运行的容器中执行命令。本文将详细介绍Docker exec命令的用法和示例&#xff0c;帮助大家更好地理解和使用这个命令。 Docker是一种流行的容器化平台&#xff0c;允许我们在容器中运行应用程序。有时候…

Linux 服务器磁盘满了怎么办?详细清理大文件指南

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f33a; 仓库主页&#xff1a; Gitee &#x1f4ab; Github &#x1f4ab; GitCode &#x1f496; 欢迎点赞…

作业三详解

作业3&#xff1a; 在作业1的基础上&#xff0c;整合修改、删除功能&#xff0c;可实现如下功能 1.进入新增页面&#xff0c;页面填入新增数据&#xff0c;提交表单&#xff0c;然后跳转到查询列表页面&#xff0c;列表页面显示所有记录&#xff08;多一条新增的数据&#xff…

哈希一致性算法

一致性哈希是什么&#xff0c;使用场景&#xff0c;解决了什么问题&#xff1f; #网站分配请求问题&#xff1f; 大多数网站背后肯定不是只有一台服务器提供服务&#xff0c;因为单机的并发量和数据量都是有限的&#xff0c;所以都会用多台服务器构成集群来对外提供服务。 但…

MATLAB矩阵操作

MATLAB矩阵操作 文章目录 MATLAB矩阵操作1.矩阵的定义与构造2.矩阵的四则运算3.矩阵的下标 1.矩阵的定义与构造 A [1 2 3 4 5 6] %矩阵的定义 B 1:2:9 %1-9当中的数字&#xff0c;每2个数字跳过&#xff0c;并且不可以缺省 C repmat(B,3,1) %对B数组横着重复1次&#x…

再检查下这些测试思维面试题你都会了么?

创建坐席组的功能模块&#xff0c;如何进行测试用例设计&#xff1f; 解答&#xff1a; 功能测试&#xff0c;使用等价类划分法去分析创建坐席的每个输入项的有效及无效类&#xff0c;同步考虑边界值去设计对应的测试用例&#xff1a; 先进行冒烟测试&#xff0c;正常创建坐席…

构建自己的私人GPT

创作不易&#xff0c;请大家多鼓励支持。 在现实生活中&#xff0c;很多人的资料是不愿意公布在互联网上的&#xff0c;但是我们又要使用人工智能的能力帮我们处理文件、做决策、执行命令那怎么办呢&#xff1f;于是我们构建自己或公司的私人GPT变得非常重要。 一、本地部署…

用通俗易懂的方式讲解:LSTM原理及生成藏头诗(Python)

一、基础介绍 1.1 神经网络模型 常见的神经网络模型结构有前馈神经网络(DNN)、RNN&#xff08;常用于文本 / 时间系列任务&#xff09;、CNN&#xff08;常用于图像任务&#xff09;等等。 前馈神经网络是神经网络模型中最为常见的&#xff0c;信息从输入层开始输入&#xf…

软件测试|全面解析Docker Start/Stop/Restart命令:管理容器生命周期的必备工具

简介 Docker是一种流行的容器化平台&#xff0c;用于构建、分发和运行应用程序。在使用Docker时&#xff0c;经常需要管理容器的生命周期&#xff0c;包括启动、停止和重启容器。本文将详细介绍Docker中的docker start、docker stop和docker restart命令&#xff0c;帮助您全面…