来自腾讯、谷歌、百度等名企的精选面试五十题

1.谈谈你对面向对象编程的认识

面向对象的几大特征:封装、继承、多态,扯扯这些玩意


2. 8月20日,金山面试,题目如下:
数据库1中存放着a类数据,数据库2中存放着以天为单位划分的表30张(比如table_20110909,table_20110910,table_20110911),总共是一个月的数据。表1中的a类数据中有一个字段userid来唯一判别用户身份,表2中的30张表(每张表结构相同)也有一个字段userid来唯一识别用户身份。如何判定a类数据库的多少用户在数据库2中出现过?来源:

http://topic.csdn.net/u/20120820/23/C6B16CCF-EE15-47C0-9B15-77497291F2B9.html

数据库不是我擅长的


3. 一个单词单词字母交换,可得另一个单词,如army->mary,成为兄弟单词。提供一个单词,在字典中找到它的兄弟。描述数据结构和查询过程。评点:同去年9月份的一道题,见此文第3题:

http://blog.csdn.net/v_july_v/article/details/6803368

这道题确实不难,可以建立这样的词典,按所有字母的顺序排列的单词,army可以保存为amry,先排序,之后建立词典。

建立好词典之后,每次查询一个单词,先将此单词sort后,然后查询即可


4. 线程和进程区别和联系。什么是“线程安全”


5. C和C++怎样分配和释放内存,区别是什么

这种基础概念题可以说是百考不厌。。。


6. 一个url指向的页面里面有另一个url,最终有一个url指向之前出现过的url或空,这两种情形都定义为null。这样构成一个单链表。给两条这样单链表,判断里面是否存在同样的url。url以亿级计,资源不足以hash。

情形一:两URL链表相交并且无环

情形二:两URL链表相交并且有环

情形三:不相交并且无环

情形四:不相交并且有环

由于题目只要求判断是否存在相同的URL,解法如下:

链表1: 快慢指针各1个

链表2:快慢指针各1个

然后search,在search的过程中,每走一步做这样的检查:

1. 首先判断链表1的慢指针是否等于链表2的快指针,如果相等,则说明存在相同URL

2. 判断两个快指针是否指向NULL,如果都指向NULL,则判断两个慢指针是否相同,如果不同,则继续比较慢指针,因为两条链表相交,最后一个节点肯定是公共的

3. 判断链表1的慢指针是否等于链表1的快指针,链表2的慢指针是否等于链表2的快指针,不存在交叉相等,则两条链表分开且各自有环。

简单的考虑了一下上述情形,感觉还是很麻烦的


7. 数组al[0,mid-1] 和 al[mid,num-1],都分别有序。将其merge成有序数组al[0,num-1],要求空间复杂度O(1)

既然空间复杂度为O(1),那就是原地排序比如 1 3 5 7 2 4 6 8indexLeft = 0indexRight = 4比较indexLeft和indexRight对应的value,判断大小来决定是否swap、indexLeft是否递增第一次比较:不需要swap,indexLeft++第二次比较:需要swap(a1[leftIndex], a2[rightIndex]),做了swap操作之后,数组的后半部分可能是无序的,那么对后半部分做swap操作直至其有序无论是第一次比较还是第二次比较,indexRight都不会改变,重复操作直至indexLeft == indexRight即可这个时间复杂度O(N2)是否可以改善呢。。。我们可以看到对于后半部分的保持有序处理过程,只需要二分查找即可,然后memcpy复杂度可以降低至O(NlogN)是否可以降低至O(N),貌似米有特别好的办法8. 百度搜索框的suggestion,比如输入北京,搜索框下面会以北京为前缀,展示“北京爱情故事”、“北京公交”、“北京医院”等等搜索词。

如何设计使得空间和时间复杂度尽量低。

评点:老题,直接上Trie树+Hash

怎么Hash表示还没有想清楚


9. 人搜笔试1. 快排每次以第一个作为主元,问时间复杂度是多少?(O(N*logN))
  2. T(N) = N + T(N/2)+T(2N), 问T(N)的时间复杂度是多少? 点评:O(N*logN) or O(N)?
  3. 从(0,1)中平均随机出几次才能使得和超过1?(e)
  4.编程题:
一棵树的节点定义格式如下:
struct Node{
    Node* parent;
    Node* firstChild; // 孩子节点
    Node* sibling; // 兄弟节点
}
要求非递归遍历该树。
思路:采用队列存储,来遍历节点。

关于第二题,表示还要看一下算法导论。。。


10.有N个节点,每两个节点相邻,每个节点只与2个节点相邻,因此,N个顶点有N-1条边。每一条边上都有权值wi,定义节点i到节点i+1的边为wi。求:不相邻的权值和最大的边的集合。

哎,没搞懂,当N等于4时,有4条边。。。


11. 删除字符串开始及末尾的空白符,并且把数组中间的多个空格(如果有)符转化为1个。

用两个指针就可以搞定


12. 求数组(元素可为正数、负数、0)的最大子序列和。

最长子序列问题:有两种很优雅的解法,都是基础题


13. 链表相邻元素翻转,如a->b->c->d->e->f-g,翻转后变为:b->a->d->c->f->e->g


14. 链表克隆。链表的结构为:
     typedef struct list {
         int data; //数据字段
     list *middle; //指向链表中某任意位置元素(可指向自己)的指针
     list *next;//指向链表下一元素
     } list;

老题了


15. 100万条数据的数据库查询速度优化问题,解决关键点是:根据主表元素特点,把主表拆分并新建副表,并且利用存储过程保证主副表的数据一致性。(不用写代码)

妈的不用写代码也不知道该怎么做,fuck


16. 求正整数n所有可能的和式的组合(如;4=1+1+1+1、1+1+2、1+3、2+1+1、2+2)

名题百则上题,很多种解法都可以做出来。。。

17.

求旋转数组的最小元素(把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个排好序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3, 4, 5, 1, 2}为{1, 2, 3, 4, 5}的一个旋转,该数组的最小值为1)


老题了

18. 找出两个单链表里交叉的第一个元素

这种题现今不应该再拿出来考了吧


19. 字符串移动(字符串为*号和26个字母的任意组合,把*号都移动到最左侧,把字母移到最右侧并保持相对顺序不变),要求时间和空间复杂度最小

思路:先把*数出来,然后从后向前copy,最后再填上*即可


20. 时间复杂度为O(1),怎么找出一个栈里的最大元素   

编程之美上的老题了


21. 线程、进程区别


还是背熟练吧


22. static在C和C++里各代表什么含义


补充说明static在C++的新用法


23. const在C/C++里什么意思


24. 常用linux命令


25. 解释Select/Poll模型


都是UNIX环境高级编程上面的东西


26. 给定一个点分IP地址表示,写个程序把它转换成相应的32位的无符号整数并输出,如果输入不是合法数据,就返回0.


27. 给出大小为N的数组,用最快的办法找出前M个大的数字


28. 一个人在网上做项目,加入每天都有很多项目可以选,每个项目都有一个开始时间和截止时间,假设每个项目的钱是一样的,那么在n天内,如何安排自己的接活才能保证赚钱最多。


这道题典型的贪心法,每次选取截止时间最早的那个项目即可,关键在于证明


29. 假如这个时候,每个活的钱数是不同的,可以获得最大的钱数是多少?


这个又变成了典型的背包问题


30.

'?' Matches any single character.'*' Matches any sequence of characters (including the empty sequence).The matching should cover the entire input string (not partial).The function prototype should be:bool isMatch(const char *s, const char *p)Some examples:isMatch("aa","a") → falseisMatch("aa","aa") → trueisMatch("aaa","aa") → falseisMatch("aa", "*") → trueisMatch("aa", "a*") → trueisMatch("ab", "?*") → trueisMatch("aab", "c*a*b") → false来自:http://blog.csdn.net/hopeztm/article/category/1201028

31. 写代码:判断一个数字序列是BST后序遍历的结果


经典题了


32. 百度面试题:不使用随机数的洗牌算法


不知哪位同事YY出来的还是本来就存在的题


33. 平面上有很多点,点与点之间有可能有连线,求这个图里环的数目。


DFS就可以搞定吧


34. 假设两个字符串中所含有的字符和个数都相同我们就叫这两个字符串匹配,
比如:abcda和adabc,由于出现的字符个数都是相同,只是顺序不同,
所以这两个字符串是匹配的。要求高效!


简单题咯


35. 阿里云,搜索引擎中5亿个url怎么高效存储;


狗日的谁来告诉爷怎么存。。。


36. 一道C++笔试题,求矩形交集的面积:
在一个平面坐标系上,有两个矩形,它们的边分别平行于X和Y轴。
其中,矩形A已知, ax1(左边), ax2(右边), ay1(top的纵坐标), ay2(bottom纵坐标). 矩形B,类似,就是 bx1, bx2, by1, by2。这些值都是整数就OK了。
要求是,如果矩形没有交集,返回-1, 有交集,返回交集的面积。
int area(rect const& a, rect const& b)
{
  ...
}


很简单的题,不细说了


37. 求链表的倒数第二个节点


38. 有一个整数数组,求数组中第二大的数


都是简单题。。。


39. 对于给定的整数集合S,求出最大的d,使得a+b+c=d。a,b,c,d互不相同,且都属于S。集合的元素个数小于等于2000个,元素的取值范围在[-2^28,2^28 - 1],假定可用内存空间为100MB,硬盘使用空间无限大,试分析时间和空间复杂度,找出最快的解决方法。


思路:当然是bitmap啦,先扫描集合S,判断bit位上是否已经置位,如果已经置位,则继续,如果没有置位就置位咯,然后d的index在数组最右边,a、b、c分别取三个index,循环遍历即可


40. 原题大致描述有一大批数据,百万级别的。数据项内容是:用户ID、科目ABC各自的成绩。其中用户ID为0~1000万之间,且是连续的,可以唯一标识一条记录。科目ABC成绩均在0~100之间。有两块磁盘,空间大小均为512M,内存空间64M。
1) 为实现快速查询某用户ID对应的各科成绩,问磁盘文件及内存该如何组织;
2) 改变题目条件,ID为0~10亿之间,且不连续。问磁盘文件及内存该如何组织;
3) 在问题2的基础上,增加一个需求。在查询各科成绩的同时,获取该用户的排名,问磁盘文件及内存该如何组织。


虽然我是干这一行的,可并不代表我完全弄懂这种系统题啊


41. 代码实现计算字符串的相似度


DP问题


42. 给一个浮点数序列,取最大乘积子序列的值,例如 -2.5,4,0,3,0.5,8,-1,则取出的最大乘积子序列为3,0.5,8


这个题目的代码得写一写


43. 一道有趣的Facebook面试题:
给一个二叉树,每个节点都是正或负整数,如何找到一个子树,它所有节点的和最大?
点评:
@某猛将兄:后序遍历,每一个节点保存左右子树的和加上自己的值。额外一个空间存放最大值。正解,题目比较简单
@陈利人:同学们,如果你面试的是软件工程师的职位,一般面试官会要求你在短时间内写出一个比较整洁的,最好是高效的,没有什么bug的程序。所以,光有算法不够,还得多实践。
写完后序遍历,面试官可能接着与你讨论,a). 如果要求找出只含正数的最大子树,程序该如何修改来实现?b). 假设我们将子树定义为它和它的部分后代,那该如何解决?c). 对于b,加上正数的限制,方案又该如何?总之,一道看似简单的面试题,可能能变换成各种花样。


最原始的题目的解答如下:

  1.     #include <iostream>  
  2.     #include <iterator>  
  3.     #include <algorithm>  
  4.     #include <vector>  
  5.       
  6.     using namespace std;  
  7.       
  8.     struct Node  
  9.     {  
  10.         Node(int i = 0, Node *pLeft = NULL, Node *pRight = NULL) : data(i), left(pLeft), right(pRight) {}  
  11.         int data;  
  12.         Node *left;  
  13.         Node *right;  
  14.     };  
  15.       
  16.     Node* construct()  
  17.     {  
  18.         Node *node15 = new Node(-2);  
  19.         Node *node14 = new Node(-1);  
  20.         Node *node13 = new Node(7);  
  21.         Node *node12 = new Node(6);  
  22.         Node *node11 = new Node(-10);  
  23.         Node *node10 = new Node(-5);  
  24.         Node *node9 = new Node(-1);  
  25.         Node *node8 = new Node(4);  
  26.         Node *node7 = new Node(9, node14, node15);  
  27.         Node *node6 = new Node(-8, node12, node13);  
  28.         Node *node5 = new Node(6, node10, node11);  
  29.         Node *node4 = new Node(-2, node8, node9);  
  30.         Node *node3 = new Node(3, node6, node7);  
  31.         Node *node2 = new Node(-20, node4, node5);  
  32.         Node *node1 = new Node(5, node2, node3);  
  33.       
  34.         return node1;  
  35.     }  
  36.       
  37.     int findLargestSubTree(Node *root, Node *&subRoot, int &maxSum)  
  38.     {  
  39.         if (root == NULL)  
  40.             return 0;  
  41.       
  42.         int leftSum = findLargestSubTree(root->left, subRoot, maxSum);  
  43.         int rightSum = findLargestSubTree(root->right, subRoot, maxSum);  
  44.         int totalSum = leftSum + rightSum + root->data;  
  45.          
  46.         if (leftSum < rightSum)  
  47.         {  
  48.             if (rightSum < totalSum)  
  49.             {  
  50.                 subRoot = root;  
  51.             }  
  52.         }  
  53.         else  
  54.         {  
  55.             if (leftSum < totalSum)  
  56.             {  
  57.                 subRoot = root;  
  58.             }  
  59.         }  
  60.       
  61.         maxSum = max(leftSum, max(rightSum, totalSum));  
  62.       
  63.         return totalSum;  
  64.     }  
  65.       
  66.     void main()  
  67.     {  
  68.         Node *root = construct();  
  69.         Node *subRoot = NULL;  
  70.         int sum;  
  71.       
  72.         int result = findLargestSubTree(root, subRoot, sum);  
  73.       
  74.         cout << "result = " << result << endl;  
  75.         if (subRoot != NULL)  
  76.         {   
  77.             cout << subRoot->data << endl;  
  78.             cout << "sum = " << sum << endl;  
  79.         }  
  80.     }  
复制代码
a). 如果要求找出只含正数的最大子树,程序该如何修改来实现?

b). 假设我们将子树定义为它和它的部分后代,那该如何解决?


c). 对于b,加上正数的限制,方案又该如何?


比如,面试管可能还会再提两个要求:第一,不能用全局变量;第一,有个参数控制是否要只含正数的子树。其它的,随意,当然,编程风格也很重要


43. 有几百亿的整数,分布的存储到几百台通过网络连接的计算机上,你能否开发出一个算法和系统,找出这几百亿数据的中值?就是在一组排序好的数据中居于中间的数。显然,一台机器是装不下所有的数据。也尽量少用网络带宽。


应该是mapreduce的玩意吧


44. 一个数组里,数都是两两出现的,但是有三个数是唯一出现的,找出这三个数


这道题有点bug,需要再想想


45. 你走到一个分叉路口,有两条路,每个路口有一个人,一个说假话,一个说真话,你只能问其中一个人仅一个问题,如何问才能得到正确答案?


46. 给定一整型数组,若数组中某个下标值大的元素值小于某个下标值比它小的元素值,称这是一个反序。
即:数组a[]; 对于i < j 且 a > a[j],则称这是一个反序。
给定一个数组,要求写一个函数,计算出这个数组里所有反序的个数。


逆序对问题,很常见了


47. 已知字符串里的字符是互不相同的,现在任意组合,比如ab,则输出aa,ab,ba,bb,编程按照字典序输出所有的组合。
点评:非简单的全排列问题(跟全排列的形式不同,abc 全排列的话,只有6个不同的输出:http://blog.csdn.net/v_july_v/article/details/6879101)。本题可用递归的思想,设置一个变量表示已输出的个数,然后当个数达到字符串长度时,就输出。

  1.     #include <iostream>  
  2.     #include <iterator>  
  3.     #include <algorithm>  
  4.     #include <string>  
  5.     #include <limits.h>  
  6.     #include <ctype.h>  
  7.     #include <vector>  
  8.       
  9.     using namespace std;  
  10.       
  11.     void printCombine(const char *input, int index, vector<char> cvec)  
  12.     {  
  13.         if (index == strlen(input))  
  14.         {  
  15.             copy(cvec.begin(), cvec.end(), ostream_iterator<char>(cout, " "));  
  16.             cout << endl;  
  17.             return;  
  18.         }  
  19.       
  20.         for (int i = 0; i < strlen(input); i++)  
  21.         {  
  22.             cvec.push_back(input[i]);  
  23.             printCombine(input, index + 1, cvec);  
  24.             cvec.pop_back();  
  25.         }  
  26.     }  
  27.       
  28.     void main()  
  29.     {  
  30.         vector<char> cvec;  
  31.         printCombine("abc", 0, cvec);  
  32.     }  
复制代码
48.

49. 问:最后程序输出是多少?


  • void fun()  
  • {  
  •     unsigned int a = 2013;  
  •     int b = -2;  
  •     int c = 0;  
  •     while (a + b > 0)  
  •     {  
  •         a = a + b;  
  •         c++;  
  •     }  
  •     printf("%d", c);  
  • }

50.
51. 有两个序列A和B,A=(a1,a2,...,ak),B=(b1,b2,...,bk),A和B都按升序排列,对于1<=i,j<=k,求k个最小的(ai+bj),要求算法尽量高效
i,j 是下标index么。。。
52. 百度面试题


53. 9月22日,微软笔试:
T(n)=1(n<=1),T(n) = 25*T(n/5) + n^2,求算法的时间复杂度。更多题目请参见:

http://blog.csdn.net/wonderwander6642/article/details/8008209

54. 企鹅的题


55. 100个任务,100个工人每人可做一项任务,每个任务每个人做的的费用为t[100][100],求一个分配任务的方案使得总费用最少。
56. Google的题





57. 葫芦软件:
1. 问题1 两个骰子,两个人轮流投,直到点数和大于6就停止,最终投的那个人获胜。问先投那个人获胜概率?
2. 平面上n个圆,任意两个都相交,是否有一条直线和所有的圆都有交点。
3. 100个人,每人头上戴一顶帽子,写有0..99的一个数,数可能重复,每个人都只能看到除自己以外其他人的帽子。每个人需要说出自己的帽子的数,一个人说对就算赢。
4. n台机器,每台有负载,以和负载成正比的概率,随机选择一台机器
5. 行列都递增的矩阵,求中位数
58. 百度题:
1. 给定一数组,输出满足2a=b(a,b代表数组中的数)的数对,要求时间复杂度尽量低。
2. 搜索引擎多线程中每个线程占用多少内存?如果搜索引擎存储网页内存占用太大怎么解决?
3. 有很多url,例如*.baidu.com,*.sina.com ......现在给你一个sports.sina.com 快速匹配出是*.sina.com。
4. 找出字符串的编辑距离,即把一个字符串s1最少经过多少步操作变成编程字符串s2,操作有三种,添加一个字符,删除一个字符,修改一个字符
5. 编程实现memcopy
6. 实现简单的一个查找二叉树的深度的函数
59. 优酷土豆笔试题一道:
优酷是一家视频网站,每天有上亿的视频被观看,现在公司要请研发人员找出最热门的视频。
该问题的输入可以简化为一个字符串文件,每一行都表示一个视频id,然后要找出出现次数最多的前100个视频id,将其输出,同时输出该视频的出现次数。
1.假设每天的视频播放次数为3亿次,被观看的视频数量为一百万个,每个视频ID的长度为20字节,限定使用的内存为1G。请简述做法,再写代码。
2.假设每个月的视频播放次数为100亿次,被观看的视频数量为1亿,每个视频ID的长度为20字节,一台机器被限定使用的内存为1G。
点评:有关海量数据处理的题目,请到此文中找方法(无论题目形式怎么变,基本方法不变,当然,最最常用的方法是:分而治之/Hash映射 + Hash统计 + 堆/快速/归并排序):

http://blog.csdn.net/v_july_v/article/details/7382693

注:上题第二问文件太大,则可如模1000,把整个大文件映射为1000个小文件再处理 ....

60. 百度面试题:
1. 进程和线程的区别
2. 一个有序数组(从小到大排列),数组中的数据有正有负,求这个数组中的最小绝对值
3. 链表倒数第n个元素
4. 有一个函数fun能返回0和1两个值,返回0和1的概率都是1/2,问怎么利用这个函数得到另一个函数fun2,使fun2也只能返回0和1,且返回0的概率为1/4,返回1的概率为3/4。(如果返回0的概率为0.3而返回1的概率为0.7呢)
5. 有8个球,其中有7个球的质量相同,另一个与其他球的质量不同(且不知道是比其他球重还是轻),请问在最坏的情况下,最少需要多少次就能找出这个不同质量的球
6. 数据库索引
7. 有一个数组a,设有一个值n。在数组中找到两个元素a和a[j],使得a+a[j]等于n,求出所有满足以上条件的i和j
8. 1万个元素的数组,90%的元素都是1到100的数,10%的元素是101--10000的数,如何高效排序
61. 一场星际争霸比赛,共8个人,每个人的实力用分数表示,要分成两队,如何保证实力最平均?给定一个浮点数的序列,F1,F2,……,Fn(1<=n<=1000),定义P(s,e)为子序列Fi(s<=i<=e)的积,求P的最大值
62. 马路口,30分钟内看到汽车的概率是95%,那么在10分钟内看不到汽车的概率是?
63. 给定一个字符串里面只有"R" "G" "B" 三个字符,请排序,最终结果的顺序是R在前 G中 B在后。
要求:空间复杂度是O(1),且只能遍历一次字符串

64. 人人面试题
1. 实现atoi
2. 单链表变形 如 1 2 3 4 5 变为 1 3 5 4 2   如1 2 3 4 变为 1 3 4 2

3. 二叉树查找不严格小于一个值的最大值(返回节点)。
4. 有序数组里二分查找一个数(如果有相同的找最后一次出现的)。
5. 等价于n*n的矩阵,填写0,1,要求每行每列的都有偶数个1 (没有1也是偶数个),问有多少种方法

65. 数组里找到和最接近于0的两个值
66. 不知啥公司的
1. 行列有序的矩阵查找一个数
2. 直方图最大矩形
3. next_permutation
4. 字符串匹配 含有* ?
5. 实现strcpy memmove
67. hulu的题:
1. 中序遍历二叉树,结果为ABCDEFGH,后序遍历结果为ABEDCHGF,那么前序遍历结果为
2. 对字符串HELL0_HULU中的字符进行二进制编码,使得字符串的编码长度尽可能短,最短长度为
3. 对长度12的有序数组进行二分查找,目标等概率出现在数组的每个位置上,则平均比较次数为
4. 一副扑克(去王),每个人随机的摸两张,则至少需要多少人摸牌,才能保证有两个人抽到同样的花色
5. x个小球中有唯一一个球较轻,用天平秤最少称量y次能找出这个较轻的球,写出y和x的函数表达式y=f(x)
6. 3的方幂及不相等的3的方幂的和排列成递增序列1,3,4,9,10,12,13……,写出数列第300项
7. 无向图G有20条边,有4个度为4的顶点,6个度为3的顶点,其余顶点度小于3,则G有多少个顶点
8. 桶中有M个白球,小明每分钟从桶中随机取出一个球,涂成红色(无论白或红都涂红)再放回,问小明将桶中球全部涂红的期望时间是
9. 煤矿有3000吨煤要拿到市场上卖,有一辆火车可以用来运煤,火车最多能装1000吨煤,且火车本身需要烧煤做动力,每走1公里消耗1吨煤,如何运煤才能使得运到市场的煤最多,最多是多少
10. 1,2,3,4…..n,n个数进栈,有多少种出栈顺序,写出递推公式
11. 宇宙飞船有100,000位的存储空间,其中有一位有故障,现有一种Agent可以用来检测故障,每个Agent可以同时测试任意个位数,若都没有故障,则返回OK,若有一位有故障,则失去响应。如果有无限多个Agent可供使用,每个Agent进行一次检测需要耗费1小时,现在有2个小时时间去找出故障位,问最少使用多少个Agent就能找出故障
12. n个数,找出其中最小的k个数,写出代码,要求最坏情况下的时间复杂度不能高于O(n logk)
13. 写程序输出8皇后问题的所有排列,要求使用非递归的深度优先遍历
68. 有n个作业,a1,a2…..an,作业aj的处理时间为tj,产生的效益为pj,最后完成期限为dj,作业一旦被调度则不能中断,如果作业aj在dj前完成,则获得效益pj,否则无效益。给出最大化效益的作业调度算法
69. 一个是跳台阶问题,可以1次一级,1次两级,1次三级,求N级的跳法一共多少种
70. 一个文件有N个单词,每行一个,其中一个单词出现的次数大于N/2,怎么样才能快速找出这个单词
71. 将一个很长的字符串,分割成一段一段的子字符串,子字符串都是回文字符串。
有回文字符串就输出最长的,没有回文就输出一个一个的字符。
例如:
habbafgh
输出h,abba,f,g,h。

来自:http://blog.csdn.net/alexingcool/article/details/8041762

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值