1、不用explode把字符串‘aa&&bb’分割为数组['aa','bb']
function explode_my($str,$p){
$array = array();
$pLen = strlen($p);
while(stripos($str, $p) !== false){
$weizhi = stripos($str, $p);
$arr_str = substr($str,0,$weizhi);
$str = substr($str,$weizhi+$pLen);
array_push($array,$arr_str);
}
if(!empty($str)){
array_push($array,$str);
}
return $array;
}
$str = 'aa&&bb&&a$ee&&';
$p= '&&';
explode_my($str,$p);
2、不用implode实现数组转字符串
function implode_my($array,$p){
$str='';
for($i=0;$i<count($array);$i++){
if($i == count($array)-1){
$str .= $array[$i];
return $str;
}else{
$str .= $array[$i].$p;
}
}
}
$arr=['a','b','c'];
$p='*';
echo implode_my($arr,$p);
3、不大于N的最大质数
function N($n){
for($i=$n;$i>1;$i--){
$k=0;
for($j=1;$j<=$n/2;$j++){
if($i % $j == 0 ){
$k++;
}
}
if($k==1){
return $i;
}
}
}
4、1000个[0,999]范围的数中有两个重复的数,找出来
function find(){
$a=range(0,999);
$a[300]= 500;
for($i=0;$i<1000;$i++){
if($a[$i]!=$i){
echo $a[$i];
}
}
}
5、n个人,从1开始报数,第m个淘汰后,在从1开始数(约瑟夫环问题)
function Josephus($m,$n){
$m = range(1,$m);
$i = 0;
while(count($m)>1){
if(($i+1)%$n==0){
unset($m[$i]);
}else{
array_push($m,$m[$i]);
unset($m[$i]);
}
$i++;
}
echo current($m);
}
6、找26个字母所有子集
#include <iostream>
using namespace std;
int main()
{
int dCapitalLetterNum=3;
char caCapitalLetter[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
for(int i=1;i<1<<dCapitalLetterNum;++i)
{
for(int j=0;j<dCapitalLetterNum;++j)
{
if(i>>j&0x1)
cout<<caCapitalLetter[j];
}
cout<<endl;
}
//输出空集
cout<<"空集"<<endl;
}
7、数据库中存在更新,不存在则插入
INSERT INTO ipstats VALUES('192.168.0.1', 1) ON DUPLICATE KEY UPDATE clicks=clicks+1;
网友评论