一道面试题的反思
来源:互联网 发布:java windows相对路径 编辑:程序博客网 时间:2024/05/22 15:45
先看看这道面试题:请实现一个算法,确定一个字符串的所有字符是否全都不同。这里我们要求不允许使用额外的存储结构。
给定一个string iniString,请返回一个bool值,True代表所有字符全都不同,False代表存在相同的字符。保证字符串中的字符为ASCII字符。字符串的长度小于等于3000。
我相信见过这道面试题的仁兄已经很多了,因为这道题目是来自《程序员面试金典》这本书。而今天我要说的答案确是来自于牛客网上网友们的答案:
import java.util.*;public class Different { public boolean checkDifferent(String iniString) { return !iniString.matches(".*(.)(.*\\1).*"); }}
我们可以看到这段代码简洁,而且不会出错(正则的强大不可想象),但是我们忽略了正则表达式的实现。如果正则表达式在实现过程中用了额外的空间,那么我们用正则表达式来完成这道算法题就是不对的。好了,话不多说,我们来翻翻源代码。于是,我找到了这段代码(我用的是open JDK)(这段代码是属于java.util.regex.Matcher类当中第36到43行)
Matcher(Pattern var1, CharSequence var2) { this.parentPattern = var1; this.text = var2; int var3 = Math.max(var1.capturingGroupCount, 10); this.groups = new int[var3 * 2]; this.locals = new int[var1.localCount]; this.reset(); }
有由此可以看出我们用正则表达式来解决这到题目就是不对的。
tips
以上皆是小弟愚解,如有不对,还请大神指教。
1 0
- 一道面试题的反思
- 统计回文--一道面试题的反思
- 中兴的一道面试题
- 一道面试题的思考
- 微软的一道面试题
- 一道NEC的面试题
- 一道面试题的分析
- 一道数字的面试题
- 一道错误的面试题
- 一道公司的面试题
- google的一道面试题
- google的一道面试题
- 一道有趣的面试题
- 外企的一道面试题
- 一道C的面试题
- 腾讯的一道面试题
- 微软的一道面试题
- 一道以前的面试题
- PHP的两个特性导致waf绕过注入(有趣的知识点)
- bash scp command not found的解决方法
- Difference Between ASP.NET Server Controls,HTML Server Controls and HTML Intrinsic Controls
- 线段树板子
- RecylerView基本用法
- 一道面试题的反思
- 虚方法
- 用srvany.exe将程序安装为windows服务的步骤链接
- JSON 之 jackson 用法
- linux下TCP Socket编程C语言小实例
- zzu数学 实验三最佳分数近似国歌
- linux内核数据结构-顺序存储链表(1)
- 文件缓存回写简述
- 什么是rawType