234回文链表
题目描述:
请判断一个链表是否为回文链表。
示例 1:
输入: 1->2
输出: false
示例 2:
输入: 1->2->2->1
输出: true
思路:
刚开始的时候想错了,以为只有中间有重复出现的元素才能是回文串
如果题目是数组,不是链表那么这个问题解决起来就会比较容易
所以我采用了一种最笨的办法,先把长度求出来,然后判断首尾的元素是否相等,得出结论
这种方案比较蠢,但是无奈我只会按照数组的方法求
代码如下:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
int q[70000];
bool isPalindrome(struct ListNode* head){
struct ListNode *p=head;
int len=0;
while(p)
{
len++;
q[len]=p->val;
p=p->next;
}
for(int i=1;i<=len/2;i++)
{
if(q[i]!=q[len-i+1])
return false;
}
return true;
}
结论:
这本应该是一道链表的题,可是因为对链表掌握的不深刻,所以只能采取数组的形式完车。慢慢加深练习之后再回头用链表来完成一下这道题