几道PHP算法题目

上一篇 / 下一篇  2007-11-15 12:17:40 / 个人分类:php文集搜罗

查看( 4955 ) / 评论( 41 )
1、给两个字符串s1,s2,定义字符串之间的距离d(s1,s2)为通过如下操作使两个字符
串一样的最少次数:
1.替换其中一个字符
2.删除一个字符
3.插入一个字符

例如:kooxoo.com与kooxoo.cn的距离为2,12344与1244的距离为1

给出任意两个字符串,求其距离,要求给出算法并分析时间复杂度
2、输入一个1~1亿的数字,打印中文,注意特殊情况
例如,输入7,打印七,123打印一百二十三
3、将一张考试卷的内容,看成一个文本文件,
题目形如: 1.1.。。。。。。。(3分)
(假设非空行最后字符均为空格)
要求实现检索出题号及其分值,并输出类似如下的:
1.1  3分
1.2  3分
1.3  5分
4、写算法和设计思想(越详细越好),并分析复杂度:
针对:输入框中输入字符,下面会动态匹配的那种功能
比如在搜索框中输入,上,会动态匹配:
上海  40000次搜索
商业  30000次搜索


酷讯的笔试题,暂时就这么多

TAG: php文集搜罗

Ghoul的个人空间 Ghoul 发布于2007-11-15 12:28:53
有意思的题目,研究下。
Linvo's Blog linvo 发布于2008-03-13 23:56:36
就做个第二题就花了好久

还有点小问题:
数字:142505588
汉字:一亿四千二百五十万五千五百八十八
我感觉这样说更好: 一亿四千二百五十万零五千五百八十八 (万位后面少“零”)

[ 本帖最后由 linvo 于 2008-3-16 10:58 编辑 ]
十五工作室 七月十五 发布于2008-03-14 10:21:37
算法是很重要的,学好算法打好基础
现实中常见的问题,用PHP做标准格式处理,很有实用意义

[ 本帖最后由 七月十五 于 2008-3-14 10:27 编辑 ]
yjxz发布于2008-03-14 12:46:30
算法  算到头都痛啊  
admin123456789的个人空间 admin123456789 发布于2008-03-14 13:34:08
<?php

$string = 145652006;

//清0
function clean($string)
{
        if(strpos($string,'00'))
        {
                $string = str_replace('00','0',$string);
                return clean($string);
        }
return $string;
}

function d($string)
{
        $number = array(0,1,2,3,4,5,6,7,8,9);
        $numbig = array('零','一','二','三','四','五','六','七','八','九');
        $numwei = array('1'=>'十','2'=>'百','3'=>'千','4'=>'万','5'=>'十','6'=>'百','7'=>'千','8'=>'亿');
        $str = intval($string);
        $count = strlen($str);

        for($i=$count-1;$i>=0;$i--)
        {
                $a = substr($str,$i,1);
                if($a != false) $str1 .= $a.$numwei[$i];
                else $str1 .= $a;
        }
        $str1 = clean($str1);
        return  str_replace($number,$numbig,$str1);
}

echo d($string);
?>
不知道行不行 写的糊里糊涂的
pylong的php学习blog pylong 发布于2008-03-14 14:52:06
<?php
function n2c($x) //单个数字变汉字
{
    switch($x)
    {
        case '0': $ch = '零'; break;
        case '1': $ch = '一'; break;
        case '2': $ch = '二'; break;
        case '3': $ch = '三'; break;
        case '4': $ch = '四'; break;
        case '5': $ch = '五'; break;
        case '6': $ch = '六'; break;
        case '7': $ch = '七'; break;
        case '8': $ch = '八'; break;
        case '9': $ch = '九'; break;
    }
    return $ch;
}
function unit($len){
        switch ($len){
                case 1:
                        return null;
                        break;
                case 2:
                        return '十';
                        break;
                case 3:
                        return '百';
                        break;
                case 4:
                        return '千';
                        break;
                case 5:
                        return '万';
                        break;
                case 6:
                        return '十万';
                        break;       
                case 7:
                        return '百万';
                        break;
                case 8:
                        return '千万';
                        break;
                case 9:
                        return '亿';
                        break;       
                default:
                        return 'error';
        }               
}
$num=400100;
$num=(int)$num;
$cn_num='';
if (unit(strlen($num))=='error') {
        echo '输入非法';
        exit();
}
$prev_len=strlen($num);
$current_len=strlen($num);
while (unit(strlen($num))!=null) {
        $first_word=substr($num,0,1);
        $cn_num.=n2c($first_word);
        $cn_num.=unit($current_len);
        $num=substr($num,1);
        $num=(int)$num;
        $prev_len=$current_len;
        $current_len=strlen($num);
        if (($prev_len-$current_len)>=2&&$num!=0) {
                $cn_num.='零';
        }
}
if ($num!=0) {
        $cn_num.=n2c($num);
}
echo $cn_num;
?>

自己改了一下,发现问题,如果是十万,就变一十万,这个貌似不是很符合习惯,其他还没发现问题,欢迎拍砖,乱写的
highjade的个人空间 highjade 发布于2008-03-14 15:49:07
研究研究
Linvo's Blog linvo 发布于2008-03-14 20:22:34
回复 7# 的帖子
02020202
22002020
读读这两个


“一十万”。。。我的也有这个问题

[ 本帖最后由 linvo 于 2008-3-14 20:26 编辑 ]
Linvo's Blog linvo 发布于2008-03-14 20:25:18
回复 6# 的帖子
貌似读反了。。。。
shher发布于2008-03-14 23:05:26
第二题谁做出准确的了。顶啊。我的也始终不对。
顶啊。。。。
试着写程序的个人空间 试着写程序 发布于2008-03-15 15:41:29
我也做不对.
Linvo's Blog linvo 发布于2008-03-16 10:36:27
修改了一处对于满9位数字的,万位置全部为0的情况的bug

Linvo's Blog linvo 发布于2008-03-16 11:00:42
修正了7楼提出的“一十万”问题

cwk32的个人空间 cwk32 发布于2008-03-18 20:07:43
呃,第二题应该使用数组来做

先把数字变成数组,然后再进行处理,从低位开始
Dooy发布于2008-03-18 22:21:08


二万零一十

[ 本帖最后由 Dooy 于 2008-3-18 22:32 编辑 ]
Linvo's Blog linvo 发布于2008-03-19 00:18:44
回复 16# 的帖子
厉害,好简洁
也有点小问题
000202000
200000200
还有7楼提出的“一十”问题

[ 本帖最后由 linvo 于 2008-3-19 00:21 编辑 ]
04007147的个人空间 04007147 发布于2008-03-26 23:03:57
这么热闹
啊策发布于2008-03-27 18:52:59
觉得已经比较完善了

输出:十亿零十

[ 本帖最后由 啊策 于 2008-3-30 03:59 编辑 ]
luzhou(浅玉)的空间 luzhou 发布于2008-03-27 19:52:57

hubinhust发布于2008-03-28 16:24:05
为什么第二题没有人把数字当整数处理来做这个题目。

从个位开始对10取余,输出,原来数字除于10继续。 到4位 加个万字。8位加亿

整个过程递归。

效率应该高多了。
我来说两句

(可选)

Open Toolbar