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

网页转向网站保定定兴网站建设

网页转向网站,保定定兴网站建设,人力资源管理系统入口,外贸开发网站开发这个算法题里面总是有 暴力解法 把所有字串都拿出来判断一下 这里有小小的优化#xff1a; 就是当判断的字串小于等于我们自己求得的最长回文子串的长度#xff0c;那么我们就不需要在进行对这个的判断这里的begin#xff0c;还可以用来取得最小回文子串是什么 java // 暴…这个算法题里面总是有 暴力解法 把所有字串都拿出来判断一下 这里有小小的优化 就是当判断的字串小于等于我们自己求得的最长回文子串的长度那么我们就不需要在进行对这个的判断这里的begin还可以用来取得最小回文子串是什么 java // 暴力解法最长回文子串public static int longestPalindrome(String s) {int len s.length();if (s.length() 2)return len;int maxLen 1;int begin 0;char[] chars s.toCharArray();for (int i 0; i len; i) {for (int j i 1; j len; j) {if (validPalindromic(chars, i, j))maxLen Math.max(maxLen, j - i 1);begin i;}}return maxLen;}// 验证子串 s[left..right] 是否为回文串private static boolean validPalindromic(char[] chars, int left, int right) {while (left right) {if (chars[left] ! chars[right]) {return false;}left;right--;}return true;} python def longestPalindrome(s: str) - int:if len(s) 2:return len(s)maxLen 0for i in range(len(s)):for j in range(i1, len(s)):if maxLen j - i 1 and s[i:j] s[j:i:-1]:maxLen j-i1return maxLens input() print(longestPalindrome(s)) 中心扩散法 以某数或者某2个数为中心进行扩散判断 // 中心扩散法最长回文子串public static int longestPalindrome2(String s) {int len s.length();if (s.length() 2)return len;int maxLen 1;char[] chars s.toCharArray();for (int i 0; i len; i) {maxLen Math.max(maxLen, expandAroundCenter(chars, i, i));maxLen Math.max(maxLen, expandAroundCenter(chars, i, i 1));}return maxLen;}private static int expandAroundCenter(char[] charArray, int left, int right) {while (left 0 right charArray.length charArray[left] charArray[right]) {left--;right;}return right - left -1;}python # 中心扩展法 def longestPalindrome(s: str) - int:if len(s) 2:return len(s)maxLen 0for i in range(len(s)):maxLen max(maxLen, expand(s, i, i))maxLen max(maxLen, expand(s, i, i1))return maxLendef expand(s: str, left: int, right: int) - int:while left 0 and right len(s) and s[left] s[right]:left - 1right 1return right - left - 1s input() print(longestPalindrome(s)) manacher算法 这个算法 123456aabbaa 首先得知道几点 解决对称中心是数还是数中间。 我们可以在每一个中间插入一个#用#来代表2个数的中间就统一了起来。 123456#a#a#b#b#a#a# 算法我觉得是在中心扩展的衍生 先通过中心扩展找到前几个最大的dp然后通过已经求得的dp优化需要求得的数。 为了实现这个需要维护几个变量。已经求得的能够到最右边的回文子串的最右数、对称中心。 对称中心左右的在圈内的dp应该是一样的。如到7的时候可以得到最右为13中心为7.求dp【10】的时候由于对称其圈内的dp【10】dp【4】1如果这个dp大于右边界我们是不能确定的所以最大只能取右边界。然后在扩展 12345678910111213#a#a#b#b#a#a$ 在求新数的时候如果这个数在这个最右子串里面 // manacher算法最长回文子串public static int longestPalindrome(String s) {if (s.length() 2)return s.length();// 预处理StringBuilder sb new StringBuilder();sb.append(#);for (int i 0; i s.length(); i) {sb.append(s.charAt(i));sb.append(#);}sb.append(#$);char[] chars sb.toString().toCharArray();int len chars.length;int[] dp new int[len];int maxCenter 0, maxRight 0, maxLen 0;for (int i 1; i len - 1; i) {dp[i] maxRight i ? Math.min(dp[2 * maxCenter - i], maxRight - i) : 1;while (chars[i dp[i]] chars[i - dp[i]])dp[i];if (maxRight i dp[i]) {maxRight i dp[i];maxCenter i;}maxLen Math.max(maxLen, dp[i]);}return maxLen - 1;}# manacher算法 def longestPalindrome(s: str) - int:if len(s) 2:return len(s)s # #.join(s) #$ # 预处理maxLen 0maxRight 0maxCenter 0p [0] * len(s)for i in range(1,len(s)-1):if i maxRight:p[i] min(p[2 * maxCenter - i], maxRight - i)else:p[i] 1# 不懂为什么这个不加前面的条件就通不过while i-p[i] 0 and ip[i] len(s)-1 and s[i-p[i]] s[ip[i]]:p[i] 1if i p[i] maxRight:maxRight i p[i]maxCeaanter imaxLen max(maxLen, p[i])return maxLen - 1
http://www.w-s-a.com/news/480633/

相关文章:

  • 网站制作品牌公司网站的字体颜色
  • 外贸wordpress模板常德seo快速排名
  • 网站后台认证码专门做网页的网站
  • 宁波企业品牌网站建设物流公司招聘
  • 北京机建网站做网站用angular
  • 攀枝花市网站建设outlook企业邮箱注册申请
  • 企业网站建设报价单免费劳务网站建设
  • 天津平台网站建设方案国际新闻最新消息今天乌克兰与俄罗斯
  • 食用油 网站 模板网页游戏网站在线玩
  • 做网站用的书新能源东莞网站建设技术支持
  • 漯河网站超市建设软件开发的五个阶段
  • 制作深圳网站建设阿里OSS做网站图库费用
  • 网页设计与网站建设 入门必练宜都网站seo
  • 网站设计沟通阆中网站网站建设
  • 缩短网址做钓鱼网站如何确保网站安全
  • 网店网站开发怎样用ps做企业网站
  • 南京门户网站建设做网站一般注册哪几类商标
  • 企业咨询管理服务wordpress seo tdk
  • 做网站前期创建文件夹flash 开发的网站
  • 天津网站制作培训搭建网站的工具
  • 江西网站建设价格低网上卖产品怎么推广
  • 做aelogo动效有什么好的网站建立网站站点的步骤
  • 无锡网站推广公司排名网站赚钱平台
  • 网站物理结构利用公共dns做网站解析
  • 苍南做网站微信建设网站哪家好
  • 华中农业大学基因编辑在线设计网站网站蓝色配色
  • 洛阳建设工程信息网站怎么在服务器建立网站
  • 陕西省建设部官方网站微信小程序怎么关闭这个功能
  • 唐河县住房和城乡建设局网站公司需要做网站
  • 体现网站特色免费个人域名网站