-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path银联-01.cpp
41 lines (41 loc) · 976 Bytes
/
银联-01.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution
{
public:
bool isPalindrome(ListNode *head)
{
vector<int> v;
ListNode *p = head;
while (p != nullptr)
{
v.push_back(p->val);
p = p->next;
};
int n = v.size();
int left = 0;
while (left < n && v[left] == v[n - left - 1])
left++;
if (left == n)
return true;
else
{
int right = n - left - 1;
bool flag1 = true, flag2 = true;
for (int i = 0; i < right - left; i++)
{
if (v[left + i] != v[right - i - 1])
flag1 = false;
if (v[right - i] != v[left + i + 1])
flag2 = false;
};
return flag1 || flag2;
};
}
};