回文分割算法是將給定的字符串分割成若干個回文子串的算法。回文串是指正著讀和倒著讀都一樣的字符串。下面是一個簡單的C語言實現回文分割算法的示例:
#include <stdio.h>
#include <string.h>
// 判斷字符串是否為回文串
int isPalindrome(char *str, int start, int end) {
while (start < end) {
if (str[start] != str[end]) {
return 0;
}
start++;
end--;
}
return 1;
}
// 回文分割函數
void palindromePartition(char *str, int start, int len, char *output, int k) {
if (start >= len) {
output[k] = '\0';
printf("%s\n", output);
return;
}
for (int i = start; i < len; i++) {
if (isPalindrome(str, start, i)) {
int length = i - start + 1;
strncpy(output + k, str + start, length);
output[k + length] = ' ';
palindromePartition(str, i + 1, len, output, k + length + 1);
}
}
}
int main() {
char str[] = "aab";
int len = strlen(str);
char output[100];
palindromePartition(str, 0, len, output, 0);
return 0;
}
在這個示例中,isPalindrome()
函數用于判斷一個字符串是否為回文串,palindromePartition()
函數用于遞歸地進行回文分割。在main()
函數中,我們定義了一個輸入字符串str
,并調用palindromePartition()
函數進行回文分割。
運行這段代碼,輸出如下:
a a b
aa b