编程之法-面试和算法心得 - 笔记
2017-07-04 08:25
351 查看
一、字符串翻转
三步反转法,先将两部分分别反转,然后再整体反转。
abcdef -> defabc
(1)cbadef // 旋转前一部分;
(2)cbafed // 旋转后一部分;
(3)defabc // 整个旋转
那么将“I am a student.” -> "studnet. a am I",也类似。
二、字符串的包含
a = "abcxyzlmnopreset"
b = "abxy"
a,b中只包含小写字母。
如何判断b中的字符都包含在字符串a中 ?
Hash,由于只有26个小写字母,可以使用整数代替散列表。
先将a中字母放入散列表,再根据b中的字母进行判断。
作者认为还不完美 ?是否要将b放入散列表,而使用a进行对比 ?
因为b的每个字母都必须被检查到,最好的情况,可能比较少了a中字母就可以得出结果了,最坏的情况,a中字母都需要比较。
若包含任意字母的字符串,如何处理?
三、字符串的全排列
P = permutation, C = combination
排列有顺序,组合无顺序
P(n,m) = n! / (n-m)!
C(n,m) = n! / ( (n-m)! * m! )
C(n,m) = C(n, n-m)
循环排列数P(n,r) = n! / ( (n-r)! * r! ) 即,r个头不涉及排序
三步反转法,先将两部分分别反转,然后再整体反转。
abcdef -> defabc
(1)cbadef // 旋转前一部分;
(2)cbafed // 旋转后一部分;
(3)defabc // 整个旋转
那么将“I am a student.” -> "studnet. a am I",也类似。
二、字符串的包含
a = "abcxyzlmnopreset"
b = "abxy"
a,b中只包含小写字母。
如何判断b中的字符都包含在字符串a中 ?
Hash,由于只有26个小写字母,可以使用整数代替散列表。
先将a中字母放入散列表,再根据b中的字母进行判断。
作者认为还不完美 ?是否要将b放入散列表,而使用a进行对比 ?
因为b的每个字母都必须被检查到,最好的情况,可能比较少了a中字母就可以得出结果了,最坏的情况,a中字母都需要比较。
若包含任意字母的字符串,如何处理?
三、字符串的全排列
P = permutation, C = combination
排列有顺序,组合无顺序
P(n,m) = n! / (n-m)!
C(n,m) = n! / ( (n-m)! * m! )
C(n,m) = C(n, n-m)
循环排列数P(n,r) = n! / ( (n-r)! * r! ) 即,r个头不涉及排序
相关文章推荐
- 程序员编程艺术:面试和算法心得
- 程序员编程艺术:面试和算法心得
- 《程序员编程艺术:面试和算法心得》链接
- 读[编程之法:面试与算法心得](字符处理)
- 《程序员编程艺术:面试和算法心得》——目录
- 技术笔试-编程之法(算法面试心得)
- 《程序员编程艺术:面试和算法心得》——目录
- 《程序员编程艺术:面试和算法心得》——目录
- 儿时的编程算法心得笔记
- 编程之美——微软技术面试心得 勤练算法功底强,求职入职心不慌
- 游戏编程入门学习笔记34——中场休息——近期的一些心得
- JAVA编程心得-JAVA实现CRC-CCITT(XMODEM)算法
- 编程面试的10大算法概念汇总
- 编程面试10大算法概念汇总
- 五十道编程小题目,大家有时间也做做啊,一起交流算法与心得
- 编程面试的10大算法概念汇总
- 微软面试、经典算法、编程艺术、红黑树4大系列总结
- 准备微软面试心得---(沟通能力+算法与实现方式的分解能力)
- 编程面试的10大算法概念汇总
- 程序员编程艺术第一~十章集锦与总结--面试、算法、编程