Arrays 如何使用递归检查字符串是否为回文,而不使用反转或重复数组
条件是:(这些是问题的一部分,因此我不能绕过它们)Arrays 如何使用递归检查字符串是否为回文,而不使用反转或重复数组,arrays,c,recursion,palindrome,Arrays,C,Recursion,Palindrome,条件是:(这些是问题的一部分,因此我不能绕过它们) 我无法反转数组,因此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);