思路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>]
$num
<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>
$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>
echo
</span><span>
$result
</span><span>;
</span>?>