백엔드 개발 PHP 튜토리얼 面试题之算法汇总

面试题之算法汇总

Jun 13, 2016 pm 12:24 PM
gt str temp

面试题之算法集锦

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

 

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

화웨이 GT3 Pro와 GT4의 차이점은 무엇입니까? 화웨이 GT3 Pro와 GT4의 차이점은 무엇입니까? Dec 29, 2023 pm 02:27 PM

화웨이 GT3 Pro와 GT4의 차이점은 무엇입니까?

수정: Windows 11에서 캡처 도구가 작동하지 않음 수정: Windows 11에서 캡처 도구가 작동하지 않음 Aug 24, 2023 am 09:48 AM

수정: Windows 11에서 캡처 도구가 작동하지 않음

Win7의 임시 파일 위치를 수정하는 방법을 가르쳐주세요. Win7의 임시 파일 위치를 수정하는 방법을 가르쳐주세요. Jan 04, 2024 pm 11:25 PM

Win7의 임시 파일 위치를 수정하는 방법을 가르쳐주세요.

컴퓨터에서 온도는 무엇을 의미하나요? 컴퓨터에서 온도는 무엇을 의미하나요? Sep 29, 2021 pm 04:39 PM

컴퓨터에서 온도는 무엇을 의미하나요?

내부 오류: 임시 디렉터리를 생성할 수 없습니다. [해결됨] 내부 오류: 임시 디렉터리를 생성할 수 없습니다. [해결됨] Apr 17, 2023 pm 03:04 PM

내부 오류: 임시 디렉터리를 생성할 수 없습니다. [해결됨]

iPhone에서 App Store 오류에 연결할 수 없는 문제를 해결하는 방법 iPhone에서 App Store 오류에 연결할 수 없는 문제를 해결하는 방법 Jul 29, 2023 am 08:22 AM

iPhone에서 App Store 오류에 연결할 수 없는 문제를 해결하는 방법

Windows 11/10에서 프로세서 열 트립 오류를 수정하는 방법 [수정] Windows 11/10에서 프로세서 열 트립 오류를 수정하는 방법 [수정] Apr 17, 2023 am 08:13 AM

Windows 11/10에서 프로세서 열 트립 오류를 수정하는 방법 [수정]

임시 파일은 무엇입니까? 임시 파일은 무엇입니까? Jan 05, 2021 am 10:43 AM

임시 파일은 무엇입니까?

See all articles