刚打算入门学习算法,遇到一题发现 PHP 果然是最好的语音

2018-03-22 13:31:11 +08:00
 qxy

http://www.lintcode.com/en/problem/longest-words/

朋友推荐的网站,但是,只支持 C++,JAVA,PYTHON2/3,因为是刚入门,所以,找了一题应该最简单的。

然而,楼主用的 php,其他不会,所以,自己在本地写了一手。

此题给了提示:

 遍历两次的办法很容易想到,如果只遍历一次你有没有什么好办法?

但是,经我一想哪里需要两次循环。用我大 php 一次循环加个排序不就好了吗。 原数据:

Array
(
    [0] => dddd
    [1] => a
    [2] => eeeee
    [3] => ccc
    [4] => bb
)
最大数:eeeee

渣代码:

<?php

$a = [
    'dddd',
    'a',
    'eeeee',
    'ccc',
    'bb',
];

$arr = [];
foreach ($a as $k => $v) {
    $arr[strlen($v)] = $v;
}

echo '<pre>';
print_r($a);
krsort($arr);
print_r('最大数:' . current($arr));

一直听闻,php 对于数组的处理比其他语言要厉害。难道,果真如此,其他语言,对于这题有啥不同的解法,请赐教!

9273 次点击
所在节点    程序员
96 条回复
20015jjw
2018-03-23 06:42:25 +08:00
…可爱如楼主
873681136
2018-03-23 07:39:36 +08:00
xsdhy
2018-03-23 08:05:45 +08:00
每过几天就能看到黑 PHP 新的黑法,真有意思
polymerdg
2018-03-23 08:52:59 +08:00
你那复杂了

<?php
$a = ['dddd','a','eeeee','ccc','bb'];
$len = 0;
$num = 0;
foreach ($a as $k => $v) {
if (strlen($v) > $len) $num = $k;
}
echo $a[$num];
yuqaf
2018-03-23 08:58:16 +08:00
@doraemon1293 他那个时间统计不靠谱。。一样的代码跑两次时间都不一样
xAx
2018-03-23 08:59:09 +08:00
PHP 是最好的语言.....为什么会有人以为这句话是褒义?
polymerdg
2018-03-23 08:59:34 +08:00
$a = ['dddd','a','eeeee','ccc','bb'];
$len = 0;
$num = 0;
foreach ($a as $k => $v) {
if (strlen($v) > $len) {
$len = strlen($v);
$num = $k;
}
}
echo $a[$num];


修正一下
Clarencep
2018-03-23 09:00:09 +08:00
楼上各位,包括 LZ,请注意审题:
“ Given a dictionary, find all of the longest words in the dictionary.”
“ the longest words ”
“ words ”
"s"

Example 里面返回的也都是数组好不好。你们一个个就返回一个字符串,使用啥算法也都铁定挂了。
vexjoe
2018-03-23 09:17:00 +08:00
标题中就有错别字,这种动态语言可能不适合你。
wizardoz
2018-03-23 09:25:43 +08:00
php 果然是最好的语言,受教了!
laoyuan
2018-03-23 09:34:02 +08:00
今年以来 V2 黑 PHP 最狠的一次
wupher
2018-03-23 09:37:11 +08:00
看见标题我就笑了
jokerjoker
2018-03-23 09:42:18 +08:00
C#了解一下:
var longest = array.Where(x=>x.Length==array.Max(y => y.Length));
blaxmirror
2018-03-23 10:15:20 +08:00
算法的问题就不说了。
LZ 你只会 PHP,然后一番操作之后发现 PHP 是最好的语言。
逻辑在哪里?
qxy
2018-03-23 10:28:01 +08:00
@blaxmirror 因为,略看一些其他语言对于数组的操作。感觉,php 是最方便的
quericy
2018-03-23 10:28:18 +08:00
14L 正解。。
quericy
2018-03-23 10:31:18 +08:00
//$a = ['dddd','a','eeeee','ccc','bb'];
$a = ['like', 'love', 'hate', 'yes'];
$maxLen = 0;
$res = [];
foreach ($a as $k => $v) {
$len = strlen($v);
if ($len >= $maxLen) {
$maxLen = $len;
$res[$len][] = $v;
}
}
print_r($res[$maxLen]);
wwqgtxx
2018-03-23 10:38:22 +08:00
萌新在 V 站讨论算法,感觉是个作死的行为
skadi
2018-03-23 10:42:59 +08:00
刚打算入门学习算法,遇到一题发现 PHP 果然是最好的 "语音"

🤔
ftdejo
2018-03-23 10:46:48 +08:00
建议去刷 leetcode··以及楼主黑的漂亮!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/440404

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX