这道题目是好未来的笔试题,我是在牛客上看到的,因为对于php比较熟悉所以就用php试着解决一下,但是不知道是牛客在线编译系统的问题还是其他问题,我在自己本地的编译器上可以正常运行,但是在牛客上一直显示case率是25%
但是这个方法自我感觉是争取的,分享一下看看:
首先题目要求是从第一个字符串中删除第二个字符串中的所有字符,这个就不禁让我们想到使用数组相减的方法,字符串和数组不分家,一般考察字符串就不能不向着数组考虑,php中有一个自带的函数array_diff,主要是求两个数组的差集,不懂的可以看看php的手册
1。首先定义一个函数
function del_sub_str($str,$sub) { $strlen = iconv_strlen($str,"UTF-8"); $sublen = iconv_strlen($sub,"UTF-8"); $strarray = array(); $subarray = array(); for ($i = 0;$i < $strlen;$i++) { $strarray[] = iconv_substr($str,$i,1,"UTF-8"); } for($i=0;$i<$sublen;$i++){ $subarray[]=iconv_substr($sub,$i,1,'utf-8');//将第二个字符串转换成数组 } $diff = array_diff($strarray,$subarray); // 将数组转换成字符串 echo implode(' ',$diff); }先将这两个字符串转换成数组的形式,然后在求这两个数组的差集,最后使用implode函数分割成字符串输出
大家可以在这里看到使用iconv_strlen()、iconv_substr() 使用这个函数主要是为了防止输入的字符串是中文的情
最后调用该函数就可以了
del_sub_str('They are students.','aeiou');