查找两个列表的合并点
2016年9月2日
11对“找到两个列表的合并点”的回应
-
2016年9月2日下午6:04 这里是Julia的一个实例(执行时间为0.000088秒,总共应用64个内存分配)。 函数main{T=ny x、 y=x _,y_ 其他的 x、 y=y,x_ nx,ny=ny,nx 结束 dn=ny–nx#长度负差 对于i=(nx–ny+1):(nx-1) j=dn+i 如果全部(x[i:end].==y[j:end]) 返回x[1:(i-1)],y[1:(j-1)],x[i:结束] 结束 结束 返回x_,y_,数组(T,0) 结束 此代码针对不相等列表进行了优化,尽管它在相等列表上的工作速度也很快。 像往常一样,没有使用外部库。 -
2016年9月2日下午6:11 由于某些原因,代码没有正确粘贴。 这又是一个.png文件: https://app.box.com/s/0fhupoyexwx26dv6trb7ud8mgs30ntz9 -
2016年9月2日晚上8:27 在Common Lisp中: 一些测试: -
2016年9月2日晚上8:35 我上一条评论中有一个错误,代码是: -
2016年9月3日上午7:48 在Python3中。 -
2016年9月6日12:58 AM (拆除合并点(lst1 lst2) (do((l1(反向lst1)(cdr l1)) (l2(反向lst2)(cdr l2)) (合并点'()) (或(和(空l1)(空l2)) (值(反向l1)(反向l2)合并点) (推(车l1)合并点) -
2016年9月7日上午11:06 包装试验; 公共类MergePoint{ 公共静态int mergePoint(int a[],int b[]){ int aMergePoint=a.length; int bMergePoint=b.length; int alength=a.length; int blength=b.length; 对于(int i=alength-1,j=blength-1;i>=0&j>=0 ;a[i]==b[j];i–,j–){ a合并点–; b合并点–; } System.out.println(“\n aMergePoint”+aMerge点); System.out.println(“后缀”); for(int i=aMergePoint;i<a.length;i++){ System.out.print(a[i]); } System.out.println(“\nAPrefix”); for(int i=0;i<aMergePoint;i++){ System.out.print(a[i]); } System.out.println(“\nBPrefix”); for(int i=0;i<bMergePoint;i++){ System.out.print(b[i]); } for(int i=合并点;i<合并点;i++){ System.out.print(a[i]); } 返回aMergePoint; } 公共静态void main(字符串参数[]){ 整数a[]={1,2,3,4,5,6,7,8,9}; 整数b[]={5,6,7,4,5,6,1,7,8,9}; 合并点(a,b); } } -
2016年9月8日上午10:22 @杰罗姆。 很好地在Lisp中实现了这一点; 没有多少人能应付得了! 这让我想起了我的大学时代,那时我自己草草写了几个Lisp脚本。 我很好奇这门语言在这项任务中的表现,所以如果能提供任何有关这方面的信息,我将不胜感激。 -
2016年9月13日下午3:59 在Common Lisp中,使用内置函数MISMATCH和SUBSEQ: -
2016年10月20日晚上8:25 在PHP中 函数find_merge($A,$B){ $a=数组值($a); $b=数组值($b); $l=大小($A); $merge=true; 对于($i=0;$i<$l;$i++){ 如果($a[$i]==$b[$i]){ if($merge){ $mp=$i; $merge=false;} }否则{$merge=true; $mp=$l;} } $bb=数组切片($b,0,$mp); $aa=数组切片($a,0,$mp); $am=数组切片($a,$mp); 返回print_r([$aa,$bb,$am]); }