<?php
//创建链表类
class LinkList
{
public $val;
public $nextLink;//下一个节点
public function __construct($val){
$this->val=$val;
}
function appendToTail($i){
$newLink=new LinkList($i);
$current=$this;
while($current->nextLink != null){
$current=$current->nextLink;
}
$current->nextLink=$newLink;
}
}
class LinkListTest
{
//打印链表
function printLink($link){
while($link != null){
echo $link->val."->";
$link=$link->nextLink;
}
}
/**
*判断是否回文链表,翻转链表
*/
function isPalindrome($link){
if($link == null || $link->nextLink == null){
return $link;//true;//
}
$l1=null;
$l3=$link;
$l2=$link;
//取得长度
$length=0;
while($l3 != null){
$length++;
$l3=$l3->nextLink;
}
//遍历到中间,并将前半部分翻转
for($i=0;$i<($length/2);$i++){
$l3=$l2->nextLink;
$l2->nextLink=$l1;
$l1=$l2;
$l2=$l3;
}
if($length%2 ==1){
$l1=$l1->nextLink;
}
while($l1!=null && $l3!=null){
if($l1->val != $l3->val){
return false;
}
$l1=$l1->nextLink;
$l3=$l3->nextLink;
}
return true;
}
}
$list3=new LinkList(1);
$list3->appendToTail(2);
$list3->appendToTail(3);
$list3->appendToTail(2);
$list3->appendToTail(1);
$ll= new LinkListTest;
var_dump($ll->isPalindrome($list3));
判断回文链表
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 1.限制与要求 时间复杂度O(n),空间复杂度O(1) 2.思考 回文最初的概念是应用在字符串上的,比如"abcc...