Arrays 如何使用递归检查字符串是否为回文,而不使用反转或重复数组

Arrays 如何使用递归检查字符串是否为回文,而不使用反转或重复数组,arrays,c,recursion,palindrome,Arrays,C,Recursion,Palindrome,条件是:(这些是问题的一部分,因此我不能绕过它们) 我无法反转数组,因此strev函数或编写反转函数毫无意义 我无法使用其他数组将字母表复制到其中 字符串中有空格和逗号等,我必须在检查时忽略这些空格和逗号,但是我不允许从字符串中删除这些空格和逗号 读了这篇文章后,我脑海中的想法渐渐消失了, 是的,我必须使用递归 我只是想写一个函数: 返回标志=0/1的int回文(char arr[],int length) 应该这样做,但我很难弄清楚如何在不删除空格或逗号的情况下检查开头和结尾字符。 有什么想法

条件是:(这些是问题的一部分,因此我不能绕过它们)

  • 我无法反转数组,因此strev函数或编写反转函数毫无意义
  • 我无法使用其他数组将字母表复制到其中
  • 字符串中有空格和逗号等,我必须在检查时忽略这些空格和逗号,但是我不允许从字符串中删除这些空格和逗号
  • 读了这篇文章后,我脑海中的想法渐渐消失了, 是的,我必须使用递归

    我只是想写一个函数: 返回标志=0/1的int回文(char arr[],int length) 应该这样做,但我很难弄清楚如何在不删除空格或逗号的情况下检查开头和结尾字符。 有什么想法或暗示可以解决这个疯狂的问题吗

    它应该适用于以下情况:

  • 中午
  • 坐在土豆盘上,奥蒂斯
  • 使用此签名,您可以丢弃字符串开头和结尾的字符,而无需更改字符串本身:

    • 要丢弃第一个字符,请增加指针:

      回文(arr+1,长度-1)

    • 要丢弃最后一个字符,请减小长度:

      回文(arr,长度-1)

    现在想想回文的递归定义;大概是这样的:

    • 如果第一个或最后一个字符不是字母,请将其扔掉,然后检查其余字符是否为回文
    • 如果第一个和最后一个字符是字母,则比较它们
      • 平等?扔掉它们,检查子字符串是否是回文
      • 不平等?不是回文
    你必须仔细地执行逻辑;这只是一个大概的想法

    使用此签名,您可以丢弃字符串开头和结尾的字符,而无需更改字符串本身:

    • 要丢弃第一个字符,请增加指针:

      回文(arr+1,长度-1)

    • 要丢弃最后一个字符,请减小长度:

      回文(arr,长度-1)

    现在想想回文的递归定义;大概是这样的:

    • 如果第一个或最后一个字符不是字母,请将其扔掉,然后检查其余字符是否为回文
    • 如果第一个和最后一个字符是字母,则比较它们
      • 平等?扔掉它们,检查子字符串是否是回文
      • 不平等?不是回文

    你必须仔细地执行逻辑;这只是一个一般的想法。

    “查找字符串的回文”你的意思是检查字符串是否是回文。
    我很难弄清楚如何在不删除空格或逗号的情况下检查开头和结尾字符。
    绕过它们有什么问题?
    int-palindrome(char-arr[],int-first,int-last)
    其中
    first
    last
    是数组中的索引。最初的调用应该是
    palindrome(str,0,strlen(str)-1)
    必须使用递归来检查字符串是否为回文显然是没有意义的。。。不管怎样,你自己尝试了什么?就像你从一开始就绕过空格和逗号一样,你从“查找字符串的回文”开始就绕过了它们你的意思是检查一个字符串是否是回文。
    我不知道如何在不删除空格或逗号的情况下检查开头和结尾字符
    绕过它们有什么问题?
    int-palindrome(char-arr[],int-first,int-last)
    其中
    first
    last
    是数组中的索引。最初的调用应该是
    palindrome(str,0,strlen(str)-1)
    必须使用递归来检查字符串是否为回文显然是没有意义的。。。不管怎么说,你自己尝试了什么?就像你从一开始就绕过空格和逗号一样,你从endSuggestion中绕过它们:
    int-palindrome(char-const*arr,int-length)建议:
    int回文(字符常量*arr,int长度)
    
    int palindrome(char arr[], int length);