1. 程式人生 > >L2-008. 最長對稱子串

L2-008. 最長對稱子串

#include <iostream>
#include <cstdio>
#include <string.h>
#include <algorithm>

using namespace std;

int main(void){
  char str[1005];
  gets(str);
  int len = strlen(str);
  int ans = 1;
  for(int i = 0; i < len; i++){
    int L = i - 1,R = i + 1;
    int h = 1;
    while(L >= 0 && R <= len - 1){
      if(str[L] == str[R]){
        L--;
        R++;
        h += 2;
      }
      else{
        break;
      }
      ans = max(ans,h);
    }
  }
  int h;
  for(int i = 1; i < len; i++){
    if(str[i] == str[i - 1]){
      int h = 2;
      int L = i - 2,R = i + 1;
        while(L >= 0 && R <= len - 1){
          if(str[L] == str[R]){
           L--;
             R++;
            h += 2;
          }
          else{
            break;
          }
          ans = max(ans,h);
        }
    }
  }
  cout<<ans<<endl;
  return 0;
}

相關推薦

L2-008. 對稱

#include <iostream> #include <cstdio> #include <string.h> #include <algorithm>

L2-008. 對稱迴文

題目意思 求最長迴文串。 解題思路 直接用Manacher演算法,秒過,下面就一標準模板 程式碼部分 #include<iostream> #include<st

天梯賽習題 L2-008. 對稱

對給定的字串,本題要求你輸出最長對稱子串的長度。例如,給定"Is PAT&TAP symmetric?",最長對稱子串為"s PAT&TAP s",於是你應該輸出11。 輸入格式: 輸入在一行中給出長度不超過1000的非空字串。 輸出格式: 在一行中輸出最長對稱子串的長度。 輸入樣

PAT ~ L2-008. 對稱 (Manacher)

思路:裸的馬拉車演算法,,,字尾陣列應該也可以做Manacher:#include<bits/stdc++.h> using namespace std; const int MAXN =

PAT L2-008. 對稱(25) (暴力,Manacher演算法和DP解決)

L2-008. 最長對稱子串 時間限制 100 ms 記憶體限制 65536 kB 程式碼長度限制 8000 B 判題程式 Standard 作者 陳越

L2-008. 對稱(馬拉車演算法)

對給定的字串,本題要求你輸出最長對稱子串的長度。例如,給定”Is PAT&TAP symmetric?”,最長對稱子串為”s PAT&TAP s”,於是你應該輸出11。 輸入格式: 輸入在一行中給出長度不超過1000的非空字串。 輸出格式:

L2-008. 對稱(manacher演算法)

今天學習了一下manacher演算法,比較難理解的是這一步,mx表示的是當前的對稱子串的最右端, id表示的這個子串的中間這個點。2*id-i 表示 i 關於 id 的對稱點 j p[i]=mx>

對稱

stdio.h eve while 子字符串 -- sin ret longest last //求一個字符串中最長對稱字串,好像有點如google,那麽輸出goog /* O(n2)的算法 如果我們換一種思路,我們從裏向外來判斷。也就是我們先判斷子字符串A是不是對稱的

資料結構——對稱

題目大意:就是讓你找這個字串裡最長的對稱序列。 題目連結:https://pintia.cn/problem-sets/1052335451183816704/problems/1052335487275802632#p-1   思路:列舉每一個對稱中心,判斷時候對稱,由於

7-7 對稱 (25 分)

對給定的字串,本題要求你輸出最長對稱子串的長度。例如,給定Is PAT&TAP symmetric?,最長對稱子串為s PAT&TAP s,於是你應該輸出11。 輸入格式: 輸入在一行中給出長度不超過1000的非空字串。 輸出格式: 在一行中輸出最長對稱子串的長度

7-64 對稱 (25 分)

7-64 最長對稱子串 (25 分) 對給定的字串,本題要求你輸出最長對稱子串的長度。例如,給定Is PAT&TAP symmetric?,最長對稱子串為s PAT&TAP s,於是你

7-8 對稱 (25 分)

7-8 最長對稱子串 (25 分) 對給定的字串,本題要求你輸出最長對稱子串的長度。例如,給定Is PAT&TAP symmetric?,最長對稱子串為s PAT&TAP s,於是你應該輸出11。 輸入格式: 輸入在一行中給出長度不超過1000的非空字串。 輸出格式:

第四章作業--計算機17級 7-1 對稱 (25 分)四種方法求解(暴力列舉+動態規劃+中心擴充套件+manacher演算法(馬拉車))

7-1 最長對稱子串 (25 分) 對給定的字串,本題要求你輸出最長對稱子串的長度。例如,給定Is PAT&TAP symmetric?,最長對稱子串為s PAT&TAP s,於是你應該輸出11。 輸入格式: 輸入在一行中給出長度不超過1000的非空字串

7-9 對稱(25 分)

對給定的字串,本題要求你輸出最長對稱子串的長度。例如,給定Is PAT&TAP symmetric?,最長對稱子串為s PAT&TAP s,於是你應該輸出11。 輸入格式: 輸入在一行中給出長度不超過1000的非空字串。 輸出格式: 在一行中輸出最長對稱子

演算法題(二):找出對稱

做法與找出兩個字串的最長公共子串相似。先得到字串的反轉,再利用求最長公共子串的方法來求最長對稱子串。 public static void fun1(String str1) { if(str1==null ||str1.length()==0) { retur

對稱(動態規劃解法)

5-12 最長對稱子串   (25分) 對給定的字串,本題要求你輸出最長對稱子串的長度。例如,給定Is PAT&TAP symmetric?,最長對稱子串為s PAT&TAP s,於是你應該輸出11。 輸入格式: 輸入在一行中給出長度不超過1000

對稱(KMP)

對給定的字串,本題要求你輸出最長對稱子串的長度。例如,給定"Is PAT&TAP symmetric?",最長對稱子串為"s PAT&TAP s",於是你應該輸出11。 輸入格式: 輸

對稱 -- 天梯模擬

Think: 判斷字串中最大的迴文串長度,長度較小,直接暴力就可以過。。。 是PTA的模擬題。。。 題目 對給定的字串,本題要求你輸出最長對稱子串的長度。例如,給定Is PAT&TAP

2016年天梯賽模擬題集重現 對稱

2016年天梯賽模擬題集重現 程式設計題15小題,共計290分 290分 程式設計題 5-12 最長對稱子串   (25分) 對給定的字串,本題要求你輸出最長對稱