广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >如何求一个字符串中有多少个pat
  • 459
分享到

如何求一个字符串中有多少个pat

2024-04-02 19:04:59 459人浏览 独家记忆
摘要

本篇内容介绍了“如何求一个字符串中有多少个pat”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!有几个pat

本篇内容介绍了“如何求一个字符串中有多少个pat”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

有几个pat

这是pat的一道题。

如何求一个字符串中有多少个pat

分析

如何求一个字符串中有多少个pat。不要想着三重for循环去枚举所有情况了,那不是好的方法。这这种题如果有灵感的话应该能猜出来这应该是一种动态规划的问题。

首先将问题简单分解一下,如果问原串中有多少个p。那么很容易枚举一遍即可。例如序列ppp就是三个p。

如果带上a,求串pa的个数呢?pa是由p和a组成。求pa的个数肯定和a有很大的关系,每个a可能会组成若干个pa取决于这个a前面p的数量。将所有a位置组成的pa相加即可。例如pppapa  总共可以组合3+4=7个pa.

同理想知道有几个pat那也很容易啊,pat的求解需要找到每个t,然后知道当前位置前面有多少个pa,叠加求解获得结果即可。结合下图流程看更好。

如何求一个字符串中有多少个pat

不同的子序列

题目描述:

给定一个字符串 s 和一个字符串 t ,计算在 s 的子序列中 t 出现的个数。

字符串的一个 子序列 是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,"ACE" 是 "ABCDE"  的一个子序列,而 "AEC" 不是)

题目数据保证答案符合 32 位带符号整数范围。

示例 1:

输入:s = "rabbbit", t = "rabbit" 输出:3 解释: 如下图所示, 有 3 种可以从 s 中得到 "rabbit" 的方案。 (上箭头符号 ^ 表示选取的字母) rabbbit ^^^^ ^^ rabbbit ^^ ^^^^ rabbbit ^^^ ^^^

示例 2:

输入:s = "babgbag", t = "bag" 输出:5 解释: 如下图所示, 有 5 种可以从 s 中得到 "bag" 的方案。  (上箭头符号 ^ 表示选取的字母) babgbag ^^ ^ babgbag ^^    ^ babgbag ^    ^^ babgbag   ^  ^^ babgbag     ^^^

提示:

0 <= s.length, t.length <= 1000  s 和 t 由英文字母组成

分析:

这个问题其实就是上面有几个pat的变形拓展,其基本思想其实是一致的,上面那题问的是有几个pat,固定、且很短。但这里面t串的长度不固定,所以处理上就要使用数组来处理而不能直接if  else。

这题的思路肯定也是动态规划dp了,dp[j]的意思就是t串中[0,j-1]长字符在s中能够匹配的数量(当然这个值从前往后是动态变化的),数组大小为dp[t.length+1]。在遍历s串的每一个元素都要和t串中所有元素进行对比看看是否相等,如果s串枚举到的这个串和t串中的第j个相等。那么dp[j+1]+=dp[j]。你可能会问为啥是dp[j+1],因为第一个元素匹配到需要将数量+1,而这里为了避免(判断是否为首字符)这样的判断我们将dp[0]=1,这样t串的每个元素都能正常的操作。

但是有一点需要注意的就是在遍历s串中第i个字母的时候,遍历t串比较不能从左向右而必须从右向左。因为在遍历s串的第i个字符在枚举dp数组时候要求此刻数据是相对静止的叠加(即同一层次不能产生影响),而从左往右进行遇到相同字符会对后面的值产生影响。区别的话可以参考下图这个例子:

如何求一个字符串中有多少个pat

实现的代码为:

class Solution {     public int numDistinct(String s, String t) {        char s1[]=s.toCharArray();         char t1[]=t.toCharArray();          int dp[]=new int[t1.length+1];         dp[0]=1;//用来叠加          for(int i=0;i<s1.length;i++)         {             for(int j=t1.length-1;j>=0;j--)             {                 if(t1[j]==s1[i])                 {                     dp[j+1]+=dp[j];                 }             }         }         return dp[t1.length];     } }

“如何求一个字符串中有多少个pat”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: 如何求一个字符串中有多少个pat

本文链接: https://www.lsjlt.com/news/83805.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何求一个字符串中有多少个pat
    本篇内容介绍了“如何求一个字符串中有多少个pat”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!有几个pat...
    99+
    2022-10-19
  • 一个字符串中的字符有多少个
    这篇文章给大家介绍一个字符串中的字符有多少个,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。依照Java的文档, Java中的字符内部是以UTF-16编码方式表示的,最小值是 \\u0000 (0),最大值是\\ufff...
    99+
    2023-06-16
  • 一个Java字符串中有多少个字符
    本篇内容主要讲解“一个Java字符串中有多少个字符”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“一个Java字符串中有多少个字符”吧!依照Java的文档, Java中的字符内部是以UTF-16编...
    99+
    2023-06-16
  • php如何计算字符串有多少个m字符
    本篇内容介绍了“php如何计算字符串有多少个m字符”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!两种计算方法:1、使用for语句循环遍历字符...
    99+
    2023-07-02
  • php怎么计算字符串有多少个m字符
    两种计算方法:1、使用for语句循环遍历字符串中的字符,统计m字符的个数,语法“$con=0;for($i=0;$i<strlen($str);$i++){if($str[$i]==="m"){$con++;}}”...
    99+
    2022-07-04
    php php字符串
  • php如何删除字符串中多个字符
    本篇内容介绍了“php如何删除字符串中多个字符”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在php中,可以利用substr_replace...
    99+
    2023-06-20
  • php如何将多个字符串转为一个数组
    这篇文章主要介绍“php如何将多个字符串转为一个数组”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“php如何将多个字符串转为一个数组”文章能帮助大家解决问题。将多个字符串转为一个数组的步骤:1、利用...
    99+
    2023-07-02
  • js如何多次复制一个字符串
    小编给大家分享一下js如何多次复制一个字符串,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!如何多次复制一个字符串JS 字符串允许简单的重复,与纯手工复制字符串不同...
    99+
    2023-06-27
  • Java如何判断一个字符串包含了另外一个字符串
    这篇文章主要介绍了Java如何判断一个字符串包含了另外一个字符串,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。如何判断一个字符串包含了另外一个字符串这道题有点简单,对吧上一道...
    99+
    2023-06-27
  • php字符串如何替换一个字符
    这篇“php字符串如何替换一个字符”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php字符串如何替换一个字符”文章吧。替换1...
    99+
    2023-06-30
  • php如何替换字符串中第一个字符
    小编给大家分享一下php如何替换字符串中第一个字符,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在PHP中,可以使用substr_replace()函数来替换字符...
    99+
    2023-06-15
  • python如何遍历字符串中每一个字符
    这篇文章主要介绍了python如何遍历字符串中每一个字符,具有一定借鉴价值,需要的朋友可以参考下。下面就和我一起来看看吧。python遍历字符串中的每一个字符有4种方式: for in ;iter内置函数;内置函数range()或xrang...
    99+
    2023-07-06
  • php如何去除字符串中多个逗号只保留一个
    这篇文章主要讲解了“php如何去除字符串中多个逗号只保留一个”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php如何去除字符串中多个逗号只保留一个”吧!方法一:使用正则表达式我们可以使用正则...
    99+
    2023-07-05
  • oracle中如何替换多个字符串
    在Oracle中,可以使用`REPLACE`函数来替换多个字符串。例如,假设我们有一个名为`EMPLOYEES`的表,其中有一个名为...
    99+
    2023-09-12
    oracle
  • Java中如何输入一个字符串
    Java中如何输入一个字符串 首先需导入java.util包中的Scanner类,如图: 接着在main里创建Scanner类对象,记得要把System.in加上这是专门获取用户输入的内容...
    99+
    2023-09-20
    java 开发语言
  • jquery如何删除字符串第一个字符
    这篇文章主要介绍jquery如何删除字符串第一个字符,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 删除字符串第一个字符的方法:1、使用“$(select...
    99+
    2022-10-19
  • php如何删除字符串中最后一个字符
    这篇文章主要介绍了php如何删除字符串中最后一个字符的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇php如何删除字符串中最后一个字符文章都会有所收获,下面我们一起来看看吧。使用substr()subs...
    99+
    2023-07-05
  • java中如何判断一个字符串包含几个指定字符
    可以用String类里的indexOf(String s,int i)方法,这个方法s是字符串div,i是从i下标开始查找该字符串在调用字符串中的位置,返回值是int类型。相关学习视频推荐:java视频教程实例如下://创建方法ciShu,...
    99+
    2015-04-27
    java 判断 字符串 指定 字符
  • css3如何设置一行显示多少个字符
    本篇内容主要讲解“css3如何设置一行显示多少个字符”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“css3如何设置一行显示多少个字符”吧! ...
    99+
    2022-10-19
  • php如何输出多个字符串
    在php中使用echo()函数输出多个字符串,具体方法如下:echo()函数作用:php中echo()函数的作用是用于输出一个或多个字符串。echo()函数语法:echo(strings)参数:strings:表示一个或多个字符串。echo...
    99+
    2022-10-22
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作