当前位置: 首页 > news >正文

公文写作 课程中心网站建设营销策略分析论文

公文写作 课程中心网站建设,营销策略分析论文,asp做的网站如何发布,莱阳建设局网站2024.1.11 题目来源我的题解方法一 暴力模拟方法二 动态规划方法三 直接拼接方法四 计算组数 题目来源 力扣每日一题;题序:2645 我的题解 方法一 暴力模拟 直接模拟,根据题意可知 若是abc则不用插入,若是ab,ac,bc这需要 插入一…

2024.1.11

      • 题目来源
      • 我的题解
        • 方法一 暴力模拟
        • 方法二 动态规划
        • 方法三 直接拼接
        • 方法四 计算组数

题目来源

力扣每日一题;题序:2645

我的题解

方法一 暴力模拟

直接模拟,根据题意可知 若是abc则不用插入,若是ab,ac,bc这需要 插入一个字符,其他的则需要插入两个字符。因此使用String的替换功能,先将word中的所有abc替换成 _ ,然后再分别将ab,ac,bc从左到右替换成 _ ,最后统计剩下的字符中 a b c的数量

时间复杂度:O( n 2 n^2 n2) n是字符串的长度。除了遍历的O(n),还有替换方法内部的O(n)
空间复杂度:O(1)

public int addMinimum(String word) {word=word.replaceAll("abc","_");int n=word.length();if(n==0)return 0;int res=0;while(word.contains("ab")){res++;word=word.replaceFirst("ab","_");}while(word.contains("bc")){res++;word=word.replaceFirst("bc","_");}while(word.contains("ac")){res++;word=word.replaceFirst("ac","_");}for(int i=0;i<word.length();i++){char ch=word.charAt(i);if(ch>='a'&&ch<='c'){res+=2;}}return res;
}
方法二 动态规划

定义dp[i]状态表示前i个字符凑成若干个abc所需插入的字符数,则转移过程:

  • 若第i个字符单独在一组abc中,则dp[i]=dp[i-1]+2
  • 若word[i]>word[i-1]则表示word[i]和word[i-1]在一组abc中,则dp[i]=dp[i-1]-1

时间复杂度:O(n)
空间复杂度:O(n)

public int addMinimum(String word) {int n=word.length();int[] dp=new int[n+1];for(int i=0;i<n;i++){dp[i+1]=dp[i]+2;if(i<n-1&&word.charAt(i+1)>word.charAt(i)){dp[i+1]=dp[i]-1;}}return dp[n];
}

当然,可以发现转移至于i-1状态有关,所以可以使用滚动数组优化空间

public int addMinimum(String word) {int n=word.length();int dp_0=0;int dp_1=0;for(int i=0;i<n;i++){dp_1=dp_0+2;if(i<n-1&&word.charAt(i+1)>word.charAt(i)){dp_1=dp_0-1;}dp_0=dp_1;}return dp_1;
}
方法三 直接拼接

参考:官方题解

当前字符小于等于前面字符说明它们一定不在同一组 abc 中,只需要添置若干字符过渡这两者即可。例如 b前面是 c,则需要在中间添置 a,又例如 b 前面是 b,则需要在中间添置 ca。
以上两种情况可以用一个模型来表示,设当前字符是 x,前面字符是 y,那么需要添置的字符个数为 (x−y−1+3)mod  3。其中 +3 再对 3取模,可以应对 x 小于等于 y 的情况。
最后还需要处理头尾两个字符,word[0] 前面添置 word[0]−‘a′ 个字符,word[n−1]后面添置 ‘c′−word[n−1]个字符。两个可以合并为 word[0]−word[n−1]+2

时间复杂度:O(n)
空间复杂度:O(1)

 public int addMinimum(String word) {int n=word.length();int res=0;if(n==1)return 2;res+=word.charAt(0)-word.charAt(n-1)+2;for(int i=0;i<n-1;i++){int count=word.charAt(i+1)-word.charAt(i)-1+3;res+=count%3;}return res;}
方法四 计算组数

计算递增序列的组——也就是每一个递增序列都是一个组,然后使用一个变量count记录当前递增序列的长度,需要插入的字符数=3-count。在不满足递增的时候才会计算需要插入的字符数,并且重置count。

时间复杂度:O(n)。n是word的长度
空间复杂度:O(1)

public int addMinimum(String word) {int n=word.length();if(n==1){return 2;}int res=0;int count=1;for(int i=0;i<n-1;i++){if(word.charAt(i+1)<=word.charAt(i)){res+=3-count;count=1;}else{count++;}}return res+(3-count);}

有任何问题,欢迎评论区交流,欢迎评论区提供其它解题思路(代码),也可以点个赞支持一下作者哈😄~

http://www.yayakq.cn/news/41989/

相关文章:

  • 南京医院网站建设做网站宣传
  • 的建站公司宣传片拍摄脚本模板
  • wordpress 仿neoeaae沈阳网站优化推广方案
  • 网站建设吗简洁大气企业网站源码 后台
  • 南宁网站托管4徐汇区网站建设
  • iis7 网站无法显示该页面做广告推广哪家好
  • jsp做网站都可以做什么哪里有好网站设计
  • 企业网站设计方案建设银行网站下载中心在哪
  • 公司的网站建设公司网站建设网站建设制作设计seo优化珠海
  • 绿茵足球网站建设政务服务 网站 建设方案
  • 汕头市小程序定制公司啥叫优化
  • 苏州网站排名优化报价北海网站制作公司
  • 做面包网站wordpress 事件插件
  • 网站开发先找UI吗静态网站如何共用一个头部和尾部
  • 深圳专业建站公司有哪些建筑工程网上申请质量安全监督
  • 网上做代卖的网站网站建设平ppt
  • 网站推广途径和要点有哪些我做的静态网站怎么发布到网上
  • 商城网站设计价格dedecms购物网站模板下载
  • 龙岩网站制作设计物流网页设计
  • 网站做推广有用网站建设费用是多少钱
  • 二次元下午茶wordpressseo营销论文
  • 一学一做看视频网站网址导航是什么浏览器
  • 桂阳县网站建设公司哪家好免费的网站托管
  • 山西省建设主管部门网站福州专业网站建设价格
  • 北京学设计去哪个网站好网站建设放什么科目
  • 做博客的网站有哪些佛山网页搜索排名提升
  • 微网站特点新网站快速收录
  • 贵阳建设网站公司个人网站名称请
  • wordpress 电影网站什么是网络营销中的广告联盟
  • 天美传媒传媒官网免费下载网站关键词优化代理