`
varsoft
  • 浏览: 2441073 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

旧文重整理:数据结构和字符串处理代码整理

阅读更多


整理一下以前写的部分算法和字符串处理函数,东西没有什么用,只是为了学习而已。

Author: heiyeluren
Blog: http://blog.csdn.net/heiyeshuwu
Date: 2006-06-10 23:50


<?
//--------------------
//基本数据结构算法
//--------------------

//二分查找(数组里查找某个元素)
functionbin_sch($array,$low,$high,$k){
if($low<=$high){
$mid=intval(($low+$high)/2);
if($array[$mid]==$k){
return$mid;
}elseif($k<$array[$mid]){
returnbin_sch($array,$low,$mid-1,$k);
}else{
returnbin_sch($array,$mid+1,$high,$k);
}
}
return-1;
}

//顺序查找(数组里查找某个元素)
functionseq_sch($array,$n,$k){
$array[$n]=$k;
for($i=0;$i<$n;$i++){
if($array[$i]==$k){
break;
}
}
if($i<$n){
return$i;
}else{
return-1;
}
}

//线性表的删除(数组中实现)
functiondelete_array_element($array,$i)
{
$len=count($array);
for($j=$i;$j<$len;$j++){
$array[$j]=$array[$j+1];
}
array_pop($array);
return$array;
}

//冒泡排序(数组排序)
functionbubble_sort($array)
{
$count=count($array);
if($count<=0)returnfalse;

for($i=0;$i<$count;$i++){
for($j=$count-1;$j>$i;$j--){
if($array[$j]<$array[$j-1]){
$tmp=$array[$j];
$array[$j]=$array[$j-1];
$array[$j-1]=$tmp;
}
}
}
return$array;
}

//快速排序(数组排序)
functionquick_sort($array){
if(count($array)<=1)return$array;

$key=$array[0];
$left_arr=array();
$right_arr=array();

for($i=1;$i<count($array);$i++){
if($array[$i]<=$key)
$left_arr[]=$array[$i];
else
$right_arr[]=$array[$i];
}

$left_arr=quick_sort($left_arr);
$right_arr=quick_sort($right_arr);

returnarray_merge($left_arr,array($key),$right_arr);
}



//------------------------
//PHP内置字符串函数实现
//------------------------

//字符串长度
functionstrlen($str)
{
if($str=='')return0;

$count=0;
while(1){
if($str[$count]!=NULL){
$count++;
continue;
}else{
break;
}
}
return$count;
}

//截取子串
functionsubstr($str,$start,$length=NULL)
{
if($str==''||$start>strlen($str))return;
if(($length!=NULL)&&($start>0)&&($length>strlen($str)-$start))return;
if(($length!=NULL)&&($start<0)&&($length>strlen($str)+$start))return;
if($length==NULL)$length=(strlen($str)-$start);

if($start<0){
for($i=(strlen($str)+$start);$i<(strlen($str)+$start+$length);$i++){
$substr.=$str[$i];
}
}

if($length>0){
for($i=$start;$i<($start+$length);$i++){
$substr.=$str[$i];
}
}

if($length<0){
for($i=$start;$i<(strlen($str)+$length);$i++){
$substr.=$str[$i];
}
}
return$substr;
}

//字符串翻转
functionstrrev($str)
{
if($str=='')return0;
for($i=(strlen($str)-1);$i>=0;$i--){
$rev_str.=$str[$i];
}
return$rev_str;
}


//字符串比较
functionstrcmp($s1,$s2)
{
if(strlen($s1)<strlen($s2))return-1;
if(strlen($s1)>strlen($s2))return1;

for($i=0;$i<strlen($s1);$i++){
if($s1[$i]==$s2[$i]){
continue;
}else{
returnfalse;
}
}
return0;
}


//查找字符串
functionstrstr($str,$substr)
{
$m=strlen($str);
$n=strlen($substr);
if($m<$n)returnfalse;

for($i=0;$i<=($m-$n+1);$i++){
$sub=substr($str,$i,$n);
if(strcmp($sub,$substr)==0)return$i;
}
returnfalse;
}

//字符串替换
functionstr_replace($substr,$newsubstr,$str)
{
$m=strlen($str);
$n=strlen($substr);
$x=strlen($newsubstr);
if(strchr($str,$substr)==false)returnfalse;

for($i=0;$i<=($m-$n+1);$i++){
$i=strchr($str,$substr);
$str=str_delete($str,$i,$n);
$str=str_insert($str,$i,$newstr);
}
return$str;
}



//--------------------
//自实现字符串处理函数
//--------------------

//插入一段字符串
functionstr_insert($str,$i,$substr)
{
for($j=0;$j<$i;$j++){
$startstr.=$str[$j];
}
for($j=$i;$j<strlen($str);$j++){
$laststr.=$str[$j];
}
$str=($startstr.$substr.$laststr);

return$str;
}

//删除一段字符串
functionstr_delete($str,$i,$j)
{
for($c=0;$c<$i;$c++){
$startstr.=$str[$c];
}
for($c=($i+$j);$c<strlen($str);$c++){
$laststr.=$str[$c];
}
$str=($startstr.$laststr);

return$str;
}

//复制字符串
functionstrcpy($s1,$s2)
{
if(strlen($s1)==NULL||!isset($s2))return;

for($i=0;$i<strlen($s1);$i++){
$s2[]=$s1[$i];
}
return$s2;
}

//连接字符串
functionstrcat($s1,$s2)
{
if(!isset($s1)||!isset($s2))return;
$newstr=$s1;
for($i=0;$i<count($s);$i++){
$newstr.=$st[$i];
}
return$newsstr;
}

//简单编码函数(与php_decode函数对应)
functionphp_encode($str)
{
if($str==''&&strlen($str)>128)returnfalse;

for($i=0;$i<strlen($str);$i++){
$c=ord($str[$i]);
if($c>31&&$c<107)$c+=20;
if($c>106&&$c<127)$c-=75;
$word=chr($c);
$s.=$word;
}

return$s;
}

//简单解码函数(与php_encode函数对应)
functionphp_decode($str)
{
if($str==''&&strlen($str)>128)returnfalse;

for($i=0;$i<strlen($str);$i++){
$c=ord($word);
if($c>106&&$c<127)$c=$c-20;
if($c>31&&$c<107)$c=$c+75;
$word=chr($c);
$s.=$word;
}

return$s;
}

//简单加密函数(与php_decrypt函数对应)
functionphp_encrypt($str)
{
$encrypt_key='abcdefghijklmnopqrstuvwxyz1234567890';
$decrypt_key='ngzqtcobmuhelkpdawxfyivrsj2468021359';

if(strlen($str)==0)returnfalse;

for($i=0;$i<strlen($str);$i++){
for($j=0;$j<strlen($encrypt_key);$j++){
if($str[$i]==$encrypt_key[$j]){
$enstr.=$decrypt_key[$j];
break;
}
}
}

return$enstr;
}

//简单解密函数(与php_encrypt函数对应)
functionphp_decrypt($str)
{
$encrypt_key='abcdefghijklmnopqrstuvwxyz1234567890';
$decrypt_key='ngzqtcobmuhelkpdawxfyivrsj2468021359';

if(strlen($str)==0)returnfalse;

for($i=0;$i<strlen($str);$i++){
for($j=0;$j<strlen($decrypt_key);$j++){
if($str[$i]==$decrypt_key[$j]){
$enstr.=$encrypt_key[$j];
break;
}
}
}

return$enstr;
}

?>
分享到:
评论

相关推荐

    信安1901_U201911657_李文重1

    1.2线性分析(1)设计内容对于上文所示的SPN,要进行一次线性攻击,来进行密钥的破解 1.3差分分析设计内容目的类似于上一题的线性分析,只不过这次采用差分分析

    论高校体育中的保健养生 (2006年)

    人的健康不仅仅取决于锻炼,健康的关键还在于人的保健和养生.在高校体育教学实践中,我们发现体育锻炼对缓解学生大脑疲劳,改善身体形态等方面有着促进作用.而对健康来说,加强学生的保健和养生意识确实是至关重要...

    非完全无线报文重传分析研究及其分治策略

    本文研究了IP-WPRTP问题,证明了无线报文重传问题的归约定理,分析了IP-WPRTP问题最优线性网络编码报文重传策略中报文重传数量的上限和下限.然后利用分治思想提出了IP-WPRTP问题网络编码策略IP-WPRTP-DC(Divide and ...

    一级化学反应速率及地应力场对新城金矿I号矿体富矿矿柱的控制

    一级化学反应速率及地应力场对新城金矿I号矿体富矿矿柱的控制,李俊英,李培良,焦家金矿带内金矿体具有共同的倾伏、侧伏、存在富矿矿柱等几何特征。认识它们的这些规律是成矿预测及布置探矿设计的基础。该文重

    基于三层感知机实现手写数字识别-内含源码和说明书.zip

    基于三层感知机实现手写数字识别-内含源码和说明书.zip

    setuptools-40.7.0.zip

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    搭建VGG16神经网络实现图像分类-内含源码和说明书.zip

    搭建VGG16神经网络实现图像分类-内含源码和说明书.zip

    setuptools-40.6.1.zip

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    华为OD机试D卷 - 判断字符串子序列 - 免费看解析和代码.html

    私信博主免费获取真题解析以及代码

    安享智慧理财测试项目Mock服务代码

    安享智慧理财测试项目Mock服务代码

    基于STM32单片机的智能晾衣架.zip

    基于单片机的系统

    Mamba selective-scan-cuda-linux-gnu.so

    安装成功后,还是遇到ImportError xxxx selective_scan_cuda.cpython-xxx-linux-gnu.so undefined symbol,用此编译好的文件进行替换即可

    基于Java EE的停车场管理系统.zip

    如今,我国现代化发展迅速,人口比例急剧上升,在一些大型的商场,显得就格外拥挤,私家车的数量越来越多,商场停车难得问题凸显,对于停车场的合理利用有助于缓解用户停车压力,鉴于这样的背景;初步设定系统功能主要包括,用户信息管理,违规车辆信息管理,刷卡停车牌管理,停车位信息管理,停车计费,信息查看管理等功能模块。本系统采用JAVAEE开发形式,利用数据库来完成数据存储功能,运用了B/S形式的开发模式,严格按照了软件工程的开发模式进行开发,保证系统的良好运行。

    华为OD机试D卷 - 免单统计 - 免费看解析和代码.html

    私信博主免费获取真题解析以及代码

    setuptools-2.2.tar.gz

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    ASP.NET《数据库原理及应用技术》课程指导平台的开发(源代码)

    ASP.NET《数据库原理及应用技术》课程指导平台的开发(源代码)

    setuptools-40.4.2.zip

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    setuptools-54.0.0-py3-none-any.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    基于SpringBoot+Hadoop的评价预测系统的设计与实现+部署文档+全部资料 高分项目.zip

    【资源说明】 基于SpringBoot+Hadoop的评价预测系统的设计与实现+部署文档+全部资料 高分项目.zip基于SpringBoot+Hadoop的评价预测系统的设计与实现+部署文档+全部资料 高分项目.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

    利用python的pyautogui函数实现简单的自动化操作

    1.安装python3.4以上版本,并配置环境变量(目前有装3.9遇到坑的,我个人用的3.7.6) 教程:https://www.runoob.com/python3/python3-install.html 2.安装依赖包 方法:在cmd中(win+R 输入cmd 回车)输入 pip install pyperclip 回车 pip install xlrd 回车 pip install pyautogui==0.9.50 回车 pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple 回车 pip install pillow 回车 这几步如果哪步没成功,请自行百度 如 pip install opencv-python失败 3.把每一步要操作的图标、区域截图保存至本文件夹 png格式(注意如果同屏有多个相同图标,回默认找到最左上的一个,因此怎么截图,截多大的区域,是个学问,如输入框只截中间空白部分肯定是不行的,宗旨就是“唯一”) 4.在cmd.xls 的sheet1 中,配置每一步的指令,如指

Global site tag (gtag.js) - Google Analytics