百度面试题解析:有n个长为m+1的字符串

题目:

有n个长为m+1的字符串, 如果某个字符串的最后m个字符与某个字符串的前m个字符匹配,则两个字符串可以联接,
问这n个字符串最多可以连成一个多长的字符串,如果出现循环,则返回错误

分析:

题外话:这段时间以来,做了30多面试题,现在越来越有感觉,对题的思路越来越清晰,并且很多基本的数据结果和算法都比较熟。继续做下去,为了心中的梦想。。。

这题可以联想到有向图的概念,字符串A的后m个字符与字符串B的前m个字符串相连,可以看成图节点A-》图节点B,这样把所有的节点连接起来,就是个有向图。

求n个字符串最多可以连成一个多长的字符串,实际上就是求有向图的最长路径,是否出现循环,就是求有向图中是否有环。

现在就看具体实现,在实现之前,得把数据结构和算法定下来。

有向图的表示有两种方法(参考:http://www.cnblogs.com/xuqiang/archive/2011/03/28/1997680.html):

1)邻接矩阵

2)邻接表

有了有向图结构定义,就可以创建有向图了,本例中采用邻接表:

#define m 10
struct Node{
        char str[m+2];
        Node * next;
};  

Node* findGraph(char (*srcstr)[m+2], int n)
{}

图建好了,就可以使用有向图得判断是否有环,及查找最长路径算法了。

(先写到这,等有时间了,再具体实现了)

作者:csdn博客 hhh3h

更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/sjjg/

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索算法
, 字符串
, 面试题
, 字符
, 节点
有向图
7.1tmw火法字符串、7.1痛苦术士tmw字符串、7.1射击猎人tmw字符串、7.1暗牧tmw字符串、7.1踏风武僧tmw字符串,以便于您获取更多的相关知识。

时间: 2025-01-21 11:19:58

百度面试题解析:有n个长为m+1的字符串的相关文章

百度面试题解析:字符串的排列(字符串)

题目:输入一个字符串,打印出该字符串中字符的所有排列. 例如输入字符串abc,则输出由字符a, b, c 所能排列出来的所有字符串 abc, acb, bac, bac, cab和cab. 分析: 这题主要考递归思想. 依次取出每个字符,剩下的字符的字符串所有排列都打印出来,再加上开始的字符. 更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/sjjg/ 实现: #include<iostream> #include

百度面试题

百度面试题,仅提供一些参考.   1 完成函数 size_t foo(unsigned int *a1, size_t al1, unsigned int* a2, size_t al2) 其中a1和a2都为无符号数组,al1和al2为数组的长度,数组的长度为偶数. 无符号数组由一对数字区间组成. 如下例: a1 为 0,1,3,6,10,20 a2 为 0,1,20,50,4,5 则 a1表示以下区间[0,1] [3,6] [10,20] a2表示以下区间[0,1] [20,50] [4,5]

经典算法(12) 数组中只出现1次的两个数字(百度面试题)

首先来看题目要求: 在一个数组中除两个数字只出现1次外,其它数字都出现了2次, 要求尽快找 出这两个数字. 考虑下这个题目的简化版--数组中除一个数字只出现1次外,其它数字都成对出现 ,要求尽快找出这个数字.这个题目在之前的<位操作基础篇之位操作全面总结>中的"位操作趣味应用" 中就已经给出解答了.根据异或运算的特点,直接异或一次就可以找出这个数字. 现在数组中有两个 数字只出现1次,直接异或一次只能得到这两个数字的异或结果,但光从这个结果肯定无法得到这个两个数字 .因此我

深入理解Js的This绑定 ( 无需死记硬背,尾部有总结和面试题解析 )

js 的 this 绑定问题,让多数新手懵逼,部分老手觉得恶心,这是因为this的绑定 '难以捉摸',出错的时候还往往不知道为什么,相当反逻辑. 让我们考虑下面代码: var people = {      name : "海洋饼干",      getName : function(){          console.log(this.name);      }  };  window.onload = function(){      xxx.onclick =  people

java-两个很长的16进制字符串怎么进行异或运算?

问题描述 两个很长的16进制字符串怎么进行异或运算? str1=""0d1fe39e573488cf"" str2=""0d1fe39e573488ee595acd5c6d4ce0f445476794"" 怎不进行异或运算? 由于太长不能转化成long 解决方案 每2个一组,存入数组,然后循环异或. 解决方案二: byte[] array1 = str1.getBte();byte[] array2 = str2.getByt

百度研发笔试题解析: 一串首尾相连的珠子(m个),有N种颜色(N&amp;lt;=10)

题目: 一串首尾相连的珠子(m个),有N种颜色(N<=10), 设计一个算法,取出其中一段,要求包含所有N中颜色,并使长度最短. 并分析时间复杂度与空间复杂度. 分析: 使用一个额外的数组存储颜色计数: colors[N],并且定义一个颜色个数遍历int cn=0; 使用数组a[m]表示首尾相连的珠子. 遍历数组a,统计对应的颜色,如果等于颜色的个数等于N,记录下开始位置i,和结束位置j, 得到遍历的字符串长度j-i+1, 如果字符串的长度最小,则输出i,j. 更多精彩内容:http://www

百度研发笔试题解析:设计一个系统处理词语搭配问题

题目: 设计一个系统处理词语搭配问题,比如说 中国 和人民可以搭配,则中国人民 人民中国都有效.要求: *系统每秒的查询数量可能上千次: *词语的数量级为10W: *每个词至多可以与1W个词搭配 当用户输入中国人民的时候,要求返回与这个搭配词组相关的信息. 分析: 性能要求:每秒查询量达到上千次,意思就是QPS要达到1000以上. 搜索端使用多线程处理,现在服务器都是多核的,可以充分利用服务的资源. 数据结构: 所有词语建一张大表,并给每个词语分配一个id. 存储结构如下: id1,word1,

微软面试题解析:实现一个挺高级的字符匹配算法

题目: 给一串很长字符串,要求找到符合要求的字符串,例如目的串:123 1******3***2 ,12*****3这些都要找出来 其实就是类似一些和谐系统. 分析: 自然匹配就是对待匹配的每个字符挨个匹配 设你的待匹配字串长度位n,模式字符串长度位m. 对于待匹配字符串中的任意一个字符最坏情况下要匹配m次,也就是说这个字符不在模式字符串中. 所以最坏情况下总共是m*n此匹配,时间复杂度就是O(m*n) 更多精彩内容:http://www.bianceng.cnhttp://www.biance

从一道百度面试题到分析输入url到页面返回的过程(或者查询返回过程)

最近看到一个题目,是当在浏览器中输入一个url后回车,后台发生了什么?比如输入url后,你看到了百度的首页,那么这一切是如何发生的呢? 这个问题之前.最近.我想以后肯定还会被问到,或者问到这样的题目,如果在百度框里输入查询的字符串开始,是怎么返回你需要的东西呢. 那这什么个过程呢(这个问题我在之后的博客中在写)? 网上各种的说法,不外乎这么几种 第一种简单的说呢就是这样的: 第一步:客户机提出域名解析请求,并将该请求发送给本地的域名服务器. 第二步:当本地的域名服务器收到请求后,就先查询本地的缓