字符串高频面试题精讲PPT推荐.ppt

上传人:b****2 文档编号:15510305 上传时间:2022-11-03 格式:PPT 页数:17 大小:320KB
下载 相关 举报
字符串高频面试题精讲PPT推荐.ppt_第1页
第1页 / 共17页
字符串高频面试题精讲PPT推荐.ppt_第2页
第2页 / 共17页
字符串高频面试题精讲PPT推荐.ppt_第3页
第3页 / 共17页
字符串高频面试题精讲PPT推荐.ppt_第4页
第4页 / 共17页
字符串高频面试题精讲PPT推荐.ppt_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

字符串高频面试题精讲PPT推荐.ppt

《字符串高频面试题精讲PPT推荐.ppt》由会员分享,可在线阅读,更多相关《字符串高频面试题精讲PPT推荐.ppt(17页珍藏版)》请在冰豆网上搜索。

字符串高频面试题精讲PPT推荐.ppt

nC/C+-128.+127,我们通常转化为unsigned变为0.+255nJava:

0.655353/面试题总体分析o和数组相关,内容广泛n概念理解:

字典序n简单操作:

插入、删除字符,旋转n规则判断(罗马数字转换是否是合法的整数、浮点数)n数字运算(大数加法、二进制加法)n排序、交换(partition过程)n字符计数(hash):

变位词n匹配(正则表达式、全串匹配、KMP、周期判断)n动态规划(LCS、编辑距离、最长回文子串)n搜索(单词变换、排列组合)4/例10-1交换o把一个0-1串(只包含0和1的串)进行排序,你可以交换任意两个位置,问最少交换的次数?

(国内某公司最新在线笔试题)n分析:

快排partition?

最左边的那些0和最右边的那些1都可以不管o000001.0111.1intanswer=0;

for(inti=0,j=len1;

ij;

+i,-j)for(;

(ii)&

(aj=1);

-j);

if(i=0;

-j)si-=sj;

if(sj=b)si-=b;

o思考题:

如何把字符串的空格变成”%20”?

同样,字符数组足够大!

7/例3交换星号o例3一个字符串只包含*和数字,请把它的*号都放开头。

n方法1快排partition数字相对顺序会变化o循环不变式:

0.i1都是*,i.j1是数字,j.n1未探测for(inti=0,j=0;

j=0;

-i)if(isdigit(si)sj-=si;

for(;

-j)sj=*;

10/例4子串变位词o给定两个串a和b,问b是否是a的子串的变位词。

例如输入a=hello,b=lel,lle,ello都是true,但是b=elo是false。

(国外某公司最新面试题)n滑动窗口的思想o动态维护一个“窗口”。

o比如b的长度是3,我们考察a0.2,1.3,2.4是否和b是变位词o如何与b比较?

11/例4续1o我们用一个hash,基于字符串的特殊性,我们可以用0.255或者0.65535的数组,我们暂且认为它们都是小写英文字母,用0.25来表示b中每个单词出现多少次。

o我们可以存一下有多少个非0次出现的,以后有用intnonZero=0;

for(inti=0;

ilenb;

+i)if(+numbia=1)+nonZero;

12/例4续2o我们用b中的次数减去a中一个“窗口”内的字符种类,如果结果全是0,则找到这样的子串了。

注意num的含义变为了字符种类差o第一个窗口0.lenb1(注意lenalenb无解)for(inti=0;

+i)intc=aia;

-numc;

if(numc=0)-nonZero;

elseif(numc=-1)+nonZero;

if(nonZero=0)returntrue;

13/例4续3o窗口如何滑动?

向右移动一位n新窗口ailenb+1.in旧窗口ailenb.i1o扔掉ailenbo加入aifor(inti=lenb;

ilena;

+i)intc=ailenba;

+numc;

if(numc=1)+nonZero;

elseif(numc=0)-nonZero;

c=aia;

o思考题Leetcode314/例5单词翻转o翻转句子中全部的单词,单词内容不变n例如Imastudent.变为student.aImnin-place翻转字符串第i位到第j位owhile(ij)swap(si+,sj-);

n有什么用?

o翻转整个句子:

.tnedutsamIo每个单词单独翻转:

student.aImn难点?

如何区分单词?

找空格,splitn思考题:

字符串循环移位abcdo移动1次变为bcdao移动2次变为cdabo移动3次变为dabco结论:

长度为n,移动m次,相当于移动m%n次n前m%n位翻转,后nm%n位翻转n总体再翻转一次试验一下?

15/总结o我理解的in-place(原地)n本身O

(1)空间n递归,堆栈空间可以不考虑o原地相关的问题n字符串循环左移、右移动n快排partition相关o滑动窗口o能达到O(n)的的时间复杂度oO

(1)的空间复杂度o规则相关细致o匹配(暴力):

KMP比较少见oManacher要求比较高的笔试16/谢谢大家o更多算法视频尽在:

nhttp:

/us:

微博n七月算法n七月问答n曹鹏博士17/

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学研究 > 教学反思汇报

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1