回文串的處理

2021-08-13 10:31:26 字數 823 閱讀 2868

回文串要新增一些輔助字元#,就是在字串之間新增#這個輔助字元,目前這種做法主要的乙個優化是 比如asbsa這個字串。如果左邊的s的回文序列求出來了,右邊的s可以根據左邊的s來求

int p(char*str, int n)

int newn = 2 * n + 1;

char*newstr = new char[newn];

for (int i = 0; i newstr[i] = '#';

newstr[i+1] = str[i >> 1]; //錯誤2

}newstr[newn - 1] = '#';

int*count = new int[newn];

int max = -1;

int mid = -1;

int right = -1;

for (int i = 0; i < newn; ++i)

int c = 0;

if (mid != -1 && i < right)

while ((i + c + 1) < newn && (i - c - 1) >= 0)

count[i] = c;

if (max == -1 || c>max)

if (mid == -1 || i + c > right)

}deletenewstr;

deletecount;

return max;

}void cc(char*p,int n)

}bool ispalindrome(string s)

}return true;

}

oj 回文字串處理

思路 首先使用string 的s.insert 插入,然後使用反轉函式reverse 最後比較是否相等 include include using namespace std int main cout count endl system pause return 0 string的成員函式inse...

字串處理 回文判斷

題目描述 1.給定乙個字串,判斷其是否為回文串.2.判斷乙個單鏈表是否回文.對於字串,可以從兩頭想中間掃瞄,在掃瞄過程中如果頭和尾的字元始終相同,則該字串是回文串.include include include include using namespace std bool ispalindrom...

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

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