📜  程序检查数组是否为回文或不使用C ++中的STL(1)

📅  最后修改于: 2023-12-03 15:27:21.974000             🧑  作者: Mango

检查数组是否为回文的方法

在本教程中,我们将了解如何使用简单的算法和递归来检查数组是否为回文。

什么是回文?

回文是具有与实体从前往后和从后往前完全相同的属性的词语,短语或数字序列。

例如: "racecar" 和 "level" 都是回文,而 "hello" 不是回文。

方法1:使用简单的算法
  1. 声明一个数组并初始化它。
  2. 计算数组的长度。
  3. 定义一个指向数组开头和结尾的指针。
  4. 遍历数组的前半部分,并检查与数组后半部分是否相同。
  5. 如果相同,则数组是回文。否则,不是回文。
int isPalindrome(int arr[], int len) {
    int start = 0;
    int end = len - 1;
    
    while (start < end) {
        if (arr[start] != arr[end])
            return 0;
        start++;
        end--;
    }
    return 1;
}
方法2:使用递归
  1. 声明一个数组并初始化它。
  2. 计算数组的长度。
  3. 如果数组长度为 0 或 1,则该数组是回文。
  4. 否则,检查数组的第一个和最后一个元素是否相同。如果相同,递归检查剩余的元素是否为回文。
  5. 如果所有递归都返回true,则数组是回文。
int isPalindromeRecursive(int arr[], int start, int end) {
    if (start >= end)
        return 1;
  
    if (arr[start] != arr[end])
        return 0;
  
    return isPalindromeRecursive(arr, start + 1, end - 1);
}
结论

我们已经探讨了两种不同的算法来检查数组是否回文,方法1使用了简单的算法,而方法2使用递归方法。无论使用哪种方法,都可以简单快速地确定数组是否为回文。