686 重复叠加字符串的匹配

链接

一题四解

首先,可以分析复制次数的上界和下界。

  • 下界:至少将a复制长度大于等于b的长度,才有可能匹配。
  • 在明确了下界后,再分析经过多少次复制,能够明确得到答案,能够明确得到答案的最小复制次数即是上界
  • 由于主串是由a复制多次而来,并且是从主串中找到子串b,因此可以明确子串的起始位置,不会超过a的长度。
  • 即长度越过a长度的起始匹配位置,必然在此前已经被匹配过了。 ? 

  • 由此,我们可知复制次数【上界】最多为【下界+1】
  • 令a的长度为n,b的长度为m,下界次数为c1,上界次数为c2=c1+1
  • 因此我们可以对a复制c2次,得到主串后匹配b,如果匹配成功后的结束位置不超过n*c1,说明复制c1即可,返回c1,超过则返回c2;匹配不成功则返回-1。

上下界性质

    public int repeatedStringMatch(String a, String b) {StringBuilder sb = new StringBuilder();int ans=0;while(sb.length()<b.length()){ans++; //统计叠加的次数sb.append(a);}sb.append(a); //加一个达到上界 注意 这个叠加并没有进行ans的统计。int idx = sb.indexOf(b); //得到第一次出现的索引if(idx==-1) return -1; // 如果索引是-1 说明不存在 返回-1return idx+b.length()>a.length()*ans?ans+1:ans; // 得到结束的位置 即初始位置(idx)+b.length()  如果结束的位置大于 c1次,则返回ans+1}

字符串哈希

结合[基本分析],我们知道这本质是一个子串匹配问题,我们可以使用[字符串哈希]来解决。

仍然是先将a复制[上界]次,得到子串ss,目的是从ss中检测是否存在子串b。

在字符串哈希中,为了方便,我们将ss和b进行拼接,设拼接后长度为len,那么b串的哈希值为[len-m+1,len]部分(下标从1开始),记为target。

然后在[1,n]范围内枚举起点,尝试找长度为m的哈希值与target相同的哈希值。

public  int repeateStringMatch(String a,String b){StringBuilder sb =  new StringBuilder();int ans=0;while(sb.length()<b.length()){ans++;sb.append(a);}sb.append(a);int idx = strHash(sb.toString(),b);if(idx==-1) return -1;return inx+b.length()>a.length()*ans?ans+1:ans;}int strHash(String ss, String b) {int P = 131;int n = ss.length(), m = b.length();String str = ss + b;int len = str.length();int[] h = new int[len + 10], p = new int[len + 10];p[0] = 1;for (int i = 0; i < len; i++) {p[i + 1] = p[i] * P;h[i + 1] = h[i] * P + str.charAt(i);}int r = len, l = r - m + 1;int target = h[r] - h[l - 1] * p[r - l + 1]; // b 的哈希值for (int i = 1; i <= n; i++) {int j = i + m - 1;int cur = h[j] - h[i - 1] * p[j - i + 1]; // 子串哈希值if (cur == target) return i - 1;}return -1;}
}

模拟

5 最长回文子串

力扣

朴素解法

  • 枚举字符串
  • 回文串长度是奇数,则依次判断s[i-k]==s[i+k],k=1,2,3...
  • 回文串长度是偶数,则依次判断s[i-k]==[i+k-1],k=1,1,3...
    public String longestPalindrome(String s){String ans = "";for(int i=0;i<s.length();i++){//回文串为奇数int l = i-1,r=i+1; String sub = getString(s,l,r);if(sub.length()>ans.length()) ans = sub;//回文串为偶数l = i-1;r = i+1-1;sub = getString(s,l,r);if(sub.length()>ans.length()) ans = sub;}return ans;}String getString(String s,int l ,int r){while(l>=0&&r<s.length()&&s.charAt(l)==s.charAt(r)){l--;r++;}return s.substring(l+1,r); // l+1 是因为 l--了,对应的范围应该要+1,而r因为api的原因,是取不到的,所以不用处理。//即 substring为 左闭右开的。}

动态规划

力扣

  public String longestPalindrome(String s) {int len = s.length();if(len<2) {return s;}int maxLen =1;int begin = 0;boolean[][] dp = new boolean[len][len];//dp[i][j] 表示 s[i:j] 是否是回文串for(int i=0;i<len;i++) {dp[i][i] = true; // 单个的 都为 true}char[] charArray = s.toCharArray();//递推开始//先枚举子串长度for(int L=2;L<=len;L++) { // 长度//枚举左边界,左边界的上限可以设置宽松一些for(int i=0;i<len;i++) {//由L和i可以确定右边界,即 j-i+1=L 得int j = L+i-1;//如果右边界越界,就可以退出当前循环if(j>=len) break;if(charArray[i]!=charArray[j]) {dp[i][j] = false ;}else {if(j-i<3) {//1和2 1:表示 偶数状态下,两个字符相等,是回文,2 奇数下,回文。 边界条件的判断dp[i][j] = true;}else {dp[i][j] = dp[i+1][j-1];  //状态转移,往外扩}}//只要 dp[i][L] ==ture 成立,就表示子串s[i,L]是回文,此时记录回文长度和起始位置。if(dp[i][j]&&j-i+1>maxLen) {maxLen = j-i+1;begin = i;}}}return s.substring(begin, begin + maxLen);}

---

走进现代通信

香农-韦弗模式

构建了一个直线单向的框架,描述了一般化的通信系统的信息传播过程。此模式包含了信源、发射器、信道、噪声、接收器、信宿6个部分。

  1. 信源与信宿:信源即信息的源头;信宿即信息的归宿,是接收信息的实体。这两个概念是相对的,在不同的场景下可以发生转换,例如,收音机接收电台信号时是信宿;发出节目声音时是信源,此时听收音机的人则成了信宿。
  2. 发射器与接收器:编码和解码。
  3. 信道和噪声:
  4. 通信方式:双工、半双工、单工。

当代通信

3G

分为WCDMA、cdma2000、TD-SCDMA

WCDMA和cdma2000属于频分双工方式(FDD),而TD-SCDMA属于时分双工方式(TDD)。WCDMA和cdma2000是上下行独享相应的带宽,上下行之间需要一定的频率间隔做“隔离带”以避免干扰;TD-SCDMA则上下行采用同一频谱,上下行之间需要时间间隔做”红绿灯“以避免干扰。

4G

LTE

LTE系统引入了正交频分复用(OFDM,orthogonal frequency division multiplexing)和多输入多输出(MIMO),显著提高了频谱效率和数据传输速率。

根据双工方式的不同,LTE系统分为FDD-LTE和TDD-LTE。二者技术的主要区别在于空口的物理层上(例如,帧结构、时分设计、同步等)。FDD空口上下采用成对的、不同的频段接收、发送数据,而TDD系统上下行使用相同的频段在不同的时隙上传输,TDD比FDD有着更高的频率利用率。

LTE-A:

LTE-A采用了载波聚合(CA,Carrier Aggregation)、上/下行多天线增强、多点协作传输、中继、异构网干扰协调增强等关键技术,能大大提高无线通信系统的峰值数据速率、峰值频谱效率、小区平均频谱效率以及小区边界用户性能。所谓多载波聚合,就是将多个频段的网络信号聚合起来,相当于公路从“单车道”变为了“多车道“。

5G

根据3GPP的定义,5G的三大应用场景为eMBB、mMTC、URLLC。eMBB即为增强移动宽带,超高速,为大流量移动宽带业务提供支持;mMTC指海量机器类通信,物联网;URLLC,低时延。

一般天线的尺寸为电磁波信号的1/4波长为佳。

1.3 模拟/dp|大话移动通信相关推荐

  1. 读书笔记 |《大话移动通信》

    读书笔记 |<大话移动通信> 读书笔记 |<大话移动通信> 书籍信息 书名:<大话移动通信> 作者:丁奇 阳桢 出版社:人民邮电出版社 本书解决的问题 初识移动通信 ...

  2. 大话移动通信pdf_移动通信是怎么实现的?

    2020年,不论是股票还是基金,通信行业.5G.半导体实在太火热,从各种终端.运营商.设备厂商.到器件厂商--不得不关注.推荐<大话移动通信>这本书,作者丁奇,挺好的一本通信行业科普书,以 ...

  3. 《大话移动通信(第2版)》赠书活动名单公告

    大家好,5月12日的"大话移动通信(第2版)"赠书活动,名单已经揭晓啦!(活动链接) <大话移动通信(第2版)> 经统计,最终的获奖名单(共15位)如下: 夏日の风 不 ...

  4. P1944 最长括号匹配(栈模拟/DP)

    P1944 最长括号匹配 可以直接用栈模拟,把匹配好的标记一下, 最后找到最长的匹配输出即可. 如果是要求最长的长度的题那么只需要求数就行了,没必要把原序列真的按照题意改变 如果要求序列,那么只需要按 ...

  5. 2019.08.12【NOIP提高组】模拟 B 组 模拟+DP+差分约束、spfa

    文章目录 0 少女觉 1 灵知的太阳信仰 2 多段线性函数 3 DY引擎 差分约束系统 我很喜欢你,我会一直喜欢你到你不再需要我喜欢你为止.--顾飞 0 少女觉 在幽暗的地灵殿中,居住着一位少女,名为 ...

  6. Ch3.大话移动通信之2G网络

    目录 1,实际GSM网络结构 2,GSM的空中接口 2.1,时隙 3,GPRS和EDGE 1,实际GSM网络结构 手机A和基站BTS通信,每个区域下的几个基站由基站控制器BSC控制,基站和BSC通过线 ...

  7. NOIP模拟测试49·50「养花·折射·画作·施工·蔬菜·联盟」

    一套题 养花 题解 分块\主席树 这里我用的是主席树 查询分段$1-(k-1)$找最大的,能向右找就向右找 for(ll nowl=1,nowr=k-1;nowl<=maxx;nowl+=k,n ...

  8. 移动通信各制式、调制的速率及频谱利用率(2G-4G)

    参考文献<大话移动通信>

  9. NOIP 好题推荐(DP+搜索+图论)POJ ZOJ

    NOIP好题推荐(DP+搜索+图论)POJ ZOJ 1370 Gossiping (数论->模线性方程有无解的判断)+(图论->DFS)  1090 Chain ->格雷码和二进制码 ...

最新文章

  1. Fedora 23 将默认使用 Wayland – 多监视器支持
  2. C#_动态获取鼠标位置的颜色
  3. Android优化系列之apk瘦身
  4. Pycharm简单配置及详细快捷键介绍
  5. Python基础(12)--模块
  6. 多人聊天、预约会议,FaceTime登录Windows和Android系统
  7. linux raw串口,linux下串口raw驱动(US100超声波)--Apple的学习笔记
  8. Java 操作Word书签(三):用文本、图片、表格替换书签
  9. python 豆瓣电影top250_「豆瓣电影top250」豆瓣电影TOP250抓取 - seo实验室
  10. 计算机科技的主题,科技感十足的电脑桌面,私藏多年,60多个主题和皮肤统统给大家...
  11. ORACLE建表sql
  12. 【IT项目管理】第5章 保障项目进度
  13. 怎样统计PPT演示文稿的字数
  14. openwrt关闭网卡端口
  15. 核酸检测系统的潜在性能问题猜想
  16. 2012年托福听力真题词汇总结
  17. opencv convertTo函数
  18. 爱创科技行业观察:中药全链条监管进入新阶段!
  19. java autoconf_「Autoconf」- 安装 @20210202
  20. 英语基础太差,到底能不能学好编程?

热门文章

  1. 互联网日报 | 铁路部门推出免费退票措施;腾讯看点启动“百万粉丝扶持计划”;苹果2月23日召开线上股东大会...
  2. mac解压.7z文件
  3. 外资企业申请互联网信息服务经营许可证ICP注意事项有哪些?
  4. CAD导入Revit缺少东西原因-Revit中如何批量导出CAD图纸
  5. VMware虚拟机连不上移动硬盘或USB
  6. python4.30每周一练
  7. PMON学习记录2:PMON启动流程1
  8. STM32学习之ucos操作系统
  9. libYUV编译成静态库以及使用
  10. [转帖]惠普笔记本Win7激活方法