面试题之算法集锦

  1. 有字符串A,B,求取AB字符串中都含有的字符,例如:①A="hello",B="jeesite",那么输出"e",②A="common",B="month",则输出"mno",输出串的顺序没有要求.
思路1:
把A去重得到A1,B去重得到B1,然后对A1,B1分别进行排序,然后遍历较短的字符串的每个字符是否存在于较长的字符串中,存在则输出
问题:
1.思路很简单,基本大家都会这么考虑,但是面试的时候就没有亮点了
思路2:
假设AB串只包含小写(其实无所谓),那么创建一个数组,数组的key为a->z,value都是0;
<?php
    function stringToChar($str,$num=1,$tmp=null){
        if(empty($tmp)){
$tmp=array(‘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);
        }
        $arr_temp=str_split($str,1);
        foreach($arr_temp as $v){
            if($tmp[$v]<$num){
                $tmp[$v]+=$num;
            }
        }
        return $tmp;
    }
    function getStringIntersect($str1, $str2){
        $temp=stringToChar($str1,1);
        //$str2的$num用2 就是为了区分 stemp中的原来的1 是 $str1中设置的
        $temp=stringToChar($str2,2,$temp);
        $result=‘‘;
        foreach ($temp as $key => $value) {
            if($value===3){
                $result.=$key;
            }
        }
        return $result;
    }
    $A="common";//"hello";
    $B="month";//"jeesite";
    $result=getStringIntersect($A, $B);
    echo $result;
?>
时间: 2024-10-10 14:06:37

面试题之算法集锦的相关文章

最短路径算法集锦

/* Name: 最短路径算法集锦 Copyright: Author: 巧若拙 Date: 12/11/14 15:32 Description: 列举了深度优先搜索的递归和非递归算法,Dijkstra最短路径算法, 基于Bellman-Fort最短路径算法的改进型广度优先搜索算法, Floyd-Warshall最短路径算法的原始版和变化版 本文是阅读<啊哈!算法>后的学习笔记,代码与教材中有些差异,若有错误请指正,谢谢! 测试数据: 5 7 0 3 2 0 4 9 4 2 1 4 1 3

融合算法集锦

一.PCA: PCA是一种用来对图像特征降维的方法,PCA通过将多个变量通过线性变换以选出较少的重要变量.它往往可以有效地从过于"丰富"的数据信息中获取最重要的元素和结构,去除数据的噪音和冗余,将原来复杂的数据降维,揭示隐藏在复杂数据背后的简单结构.近年来,PCA方法被广泛地运用于计算机领域,如数据降维.图像有损压缩.特征追踪等等.PCA方法是一个高普适用方法,它的一大优点是能够对数据进行降维处理,我们通过PCA方法求出数据集的主元,选取最重要的部分,将其余的维数省去,从而达到降维和简

记一次笔试面试题之算法

快到年底了,考虑到一些情况,加之现在工作业务没那么多了,本着想在技术上想在多学点东西的想法,突然间萌生了想换工作的想法,恰好一不错的公司Hr给我说他们在招人,于是我就偷偷的给了份简历,时隔几天她给了我一份笔试题,我一看有算法题,这是我最头疼的问题,我不反对面试算法,但是我感觉很多用人单位还是要本着自己的业务水平去面试,招适合本公司业务处理,相对比较实用又符合发展的人才就行了,当你真正拿出一些很高深的算法去面试的时候,我感觉你要看看你开出来招人的预算是不是能达到答出来这些题的待遇,是不是你现在的业

机器学习算法集锦

机器学习 机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及概率论.统计学.逼近论.凸分析.算法复杂度理论等多门学科.专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能. 严格的定义:机器学习是一门研究机器获取新知识和新技能,并识别现有知识的学问.这里所说的"机器",指的就是计算机,电子计算机,中子计算机.光子计算机或神经计算机等等. 机器学习概论 由上图所示:机器学习分为四大块: classifi

哈希算法集锦

因为工作原因,看了一下redis的底层实现,发现redis底层使用的哈希算法是murmurhash,第一次听说这个算法感觉自己对哈希值计算的常用算法了解太少,整理了一下网上讲的比较原理性的观点: 简介   哈稀函数按照定义可以实现一个伪随机数生成器(PRNG),从这个角度可以得到一个公认的结论:哈希函数之间性能的比较可以通过比较其在伪随机生成方面的比较来衡量. 一些常用的分析技术,例如泊松分布可用于分析不同的哈希函数对不同的数据的碰撞率(collision rate).一般来说,对任意一类的数据

Hadoop Web项目--Mahout0.10 MR算法集锦

1. 涉及技术及下载 项目开发使用到的软件有:Myeclipse2014,JDK1.8,Hadoop2.6,MySQL5.6,EasyUI1.3.6,jQuery2.0,Spring4.1.3,Hibernate4.3.1,Struts2.3.1,Maven3.2.1,Mahout0.10. 项目下载地址:https://github.com/fansy1990/mahout1.0,项目部署参考:http://blog.csdn.net/fansy1990/article/details/464

PHP面试题之算法解析

面试中经常被问到会什么算法,这里整合一些常见的算法及它们的实现原理.下面的例子都是经过测试可用的,如果有什么问题请告知!! 本人小白,如果有更好的实现方式,也敬请赐教,感激不尽!!!! /** * 冒泡排序 * 相邻2数比较,小的在前,大的在后 * 数组有几个元素,就要比较几轮 $i * 每轮需要比较的次数为,数组元素个数-已比较的次数 $j * @param array $array * @return array $array */ function bubbleSort($array) {

ACM算法集锦

kurXX最小生成树 #include <iostream> #include <math.h> #include <algorithm> using namespace std; #define M 501 #define LIM 20000000 struct edg{ int u,v; int w; }all_e[M*M/2]; bool operator < (const edg &a,const edg &b){ return a.w&l

代码与算法集锦-归并排序+树状数组+快排+深度优先搜索+01背包(动态规划)

归并排序 求逆序数 归并排序是建立在归并操作上的一种有效的排序算法.该算法是采用分治法(Divide and Conquer)的一个非常典型的应用. 首先考虑下如何将将二个有序数列合并.这个非常简单,只要从比较二个数列的第一个数,谁小就先取谁,取了后就在对应数列中删除这个数.然后再进行比较,如果有数列为空,那直接将另一个数列的数据依次取出即可. //将有序数组a[]和b[]合并到c[]中 void MemeryArray(int a[], int n, int b[], int m, int c