Heim >Backend-Entwicklung >PHP-Tutorial >面试题之算法集锦,试题算法集锦_PHP教程

面试题之算法集锦,试题算法集锦_PHP教程

WBOY
WBOYOriginal
2016-07-13 09:44:39847Durchsuche

面试题之算法集锦,试题算法集锦

思路1:<span>
把A去重得到A1</span>,B去重得到B1,然后对A1,B1分别进行排序,然后遍历较短的字符串的每个字符是否存在于较长的字符串中,<span>存在则输出
问题</span>:
1.思路很简单,基本大家都会这么考虑,<span>但是面试的时候就没有亮点了
思路2</span>:<span>
假设AB串只包含小写(其实无所谓)</span>,那么创建一个数组,数组的key为a->z,<span>value都是0;
</span><?<span>php
    </span><span>function</span> stringToChar(<span>$str</span>,<span>$num</span>=1,<span>$tmp</span>=<span>null</span><span>){
        </span><span>if</span>(<span>empty</span>(<span>$tmp</span><span>)){
</span><span>$tmp</span>=<span>array</span>('a'=>0,'b'=>0,'c'=>0,'d'=>0,'e'=>0,'f'=>0,'g'=>0,'h'=>0,'i'=>0,'j'=>0,'k'=>0,'l'=>0,'m'=>0,'n'=>0,'o'=>0,'p'=>0,'q'=>0,'r'=>0,'s'=>0,'t'=>0,'u'=>0,'v'=>0,'w'=>0,'x'=>0,'y'=>0,'z'=>0<span>);
        }
        </span><span>$arr_temp</span>=<span>str_split</span>(<span>$str</span>,1<span>);
        </span><span>foreach</span>(<span>$arr_temp</span> <span>as</span> <span>$v</span><span>){
            </span><span>if</span>(<span>$tmp</span>[<span>$v</span>]<<span>$num</span><span>){
                </span><span>$tmp</span>[<span>$v</span>]+=<span>$num</span><span>;
            }
        }
        </span><span>return</span> <span>$tmp</span><span>;
    }
    </span><span>function</span> getStringIntersect(<span>$str1</span>, <span>$str2</span><span>){
        </span><span>$temp</span>=stringToChar(<span>$str1</span>,1<span>);
        </span><span>//</span><span>$str2的$num用2 就是为了区分 stemp中的原来的1 是 $str1中设置的</span>
        <span>$temp</span>=stringToChar(<span>$str2</span>,2,<span>$temp</span><span>);
        </span><span>$result</span>=''<span>;
        </span><span>foreach</span> (<span>$temp</span> <span>as</span> <span>$key</span> => <span>$value</span><span>) {
            </span><span>if</span>(<span>$value</span>===3<span>){
                </span><span>$result</span>.=<span>$key</span><span>;
            }
        }
        </span><span>return</span> <span>$result</span><span>;
    }
    </span><span>$A</span>="common";<span>//</span><span>"hello";</span>
    <span>$B</span>="month";<span>//</span><span>"jeesite";</span>
    <span>$result</span>=getStringIntersect(<span>$A</span>, <span>$B</span><span>);
    </span><span>echo</span> <span>$result</span><span>;
</span>?><br />今天随便浏览网页的时候又发现了这篇文章(一次谷歌面试趣事)<br />我想起来了 思路二出自这篇文章。

 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1048743.htmlTechArticle面试题之算法集锦,试题算法集锦 思路1: 把A去重得到A1 ,B去重得到B1,然后对A1,B1分别进行排序,然后遍历较短的字符串的每个字符是否存在于...
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn