文章
37
粉丝
0
获赞
7
访问
3.5k
(1) 反转两个链表,然后再同时遍历,直到碰到第一个不相等的字母或为null(即碰到未反转前的某个链表的头结点),那么它的前驱结点(若第一个字母就不同,则为空)即为我们要的结果。
(2) 使用Java语言:
// 算法类
class Solution {
// 算法主体
public Node solution(Node str1, Node str2) {
// 如果str1和str2中有一个是空链表,直接返回null即可
if (str1 == null || str2 == null) return null;
// 反转两个链表,并获取反转后的头结点
str1 = reverseLinkList(str1);
str2 = reverseLinkList(str2);
// 反转后,若头结点(即原来的最后一个结点)不同,直接返回null
if (str1.data != str2.data) return null;
// 否则,使用四个指针分别指向str1、str1.next、str2、str2.next
Node ptr1 = str1, ptr2 = str2, ptr1n = str1.next, ptr2n = str2.next;
// 四个指针同时后移,直到碰到第一个不相等的字母或为null(即碰到未反转前的某个链表的头结点),那么ptr1和ptr2就为结果
while ((ptr1n != null &...
登录后发布评论
暂无评论,来抢沙发