牛客 判斷回文串

2021-10-25 04:17:27 字數 1418 閱讀 4983

題目思路

**實現

就是判斷傳入的string是不是回文字串,是的話返回true,否則返回false。

舉個例子

示例1輸入

「absba」

輸出true

示例2

輸入「ranko」

輸出false

常見的有兩種思路,一種是從兩頭向中間遍歷,另乙個是從中間向兩頭進行遍歷。

時間複雜度是o(n),空間複雜度都是o(1);

還有一種是判斷回文子串

**是leetcode647

給定乙個字串,你的任務是計算這個字串中有多少個回文子串。

具有不同開始位置或結束位置的子串,即使是由相同的字元組成,也會被視作不同的子串。

示例 1:

輸入:「abc」

輸出:3

解釋:三個回文子串: 「a」, 「b」, 「c」

示例 2:

輸入:「aaa」

輸出:6

解釋:6個回文子串: 「a」, 「a」, 「a」, 「aa」, 「aa」, 「aaa」

主要從中間向兩邊計算子串的個數,關鍵點是計算出中心點的個數;什麼是中心點,就是start和end初始指向的字元,那麼中心點有幾個呢?可能有1個或兩個,例如上面的就是如果長度是偶數就有兩個,如果是奇數就有1個;那整個字串的中心點有幾個呢?

答案是2length-1;

例如 aba:中心點有 a,b,a,ab,ba;個數 = 23-1=5;

再舉個例子abcba: 中心點有a,b,c,b,a,ab,bc,cb,ba 個數=2*5-1=9;

class

solution

return sum;

}public

void

count

(string s,

int start,

int end)

}}

牛客 最長回文

傳送門 有兩個長度均為n的字串a和b。可以從a中選乙個可以為空的子串a l1 r1 b中選乙個可以為空的子串b l2 r2 滿足r1 l2,然後把它們拼起來 a l1 r1 b l2 r2 求用這樣的方法能得到的最長回文串的長度。注意 求的不是本質不同的回文串個數哦!對兩個串分別跑manacher,...

牛客 小A的回文串 最長回文串,馬拉車演算法

題目 題目鏈結 小a只想知道給定的乙個字串的最大回文子串是多少,現在小a可以對這個字串做一些改動,他可以把這個字串最前面的某一段連續的字元 不改變順序 移動到原先字串的末尾。那麼請問小a通過這樣的操作之後 也可以選擇不移動 能夠得到最大回文子串的長度是多少。思路 1列舉所有字串 使用馬拉車演算法 2...

判斷回文串,判斷回文數,最長回文串,回文串的個數

判斷乙個字串是否是回文串,首先了解下它的定義 回文串 是乙個正讀和反讀都一樣的字串,比如 level 或者 noon 等等就是回文串。所以判斷是否是回文串,判斷這個字串是否對稱即可。從而用兩個指標同時向中間掃瞄即可判斷。判斷字串是否是回文串,即判斷是否對稱。兩邊指標同時向中間掃瞄,判斷是否相等,不等...