电面
- 自我介绍
- 项目和实习内容
- 一个txt文档中有100个手机号,有可能会有重复的,如何用最快的方法找出重复的?
建立一颗树,建立的过程为:
1)开始的时候树是空的。
2)逐个读取手机行,比如读入一个手机号为:12345678900,在树中插入这个手机号后,树为:
root
└─1
└─2
└─3
└─4
└─5
└─6
└─7
└─8
└─9
└─0
└─0
3)插入若干手机号后,树可能是这样的:
root
└─1
├─2
│ └─3
│ └─4
│ └─5
│ └─6
│ ├─6
│ │ └─8
│ │ └─9
│ │ └─0
│ │ ├─0
│ │ └─1
│ └─7
│ └─8
│ └─9
│ └─0
│ ├─0
│ └─1
├─5
│ └─3
│ └─4
│ └─5
│ └─6
│ └─7
│ └─8
│ └─9
│ └─0
│ └─0
└─7
└─3
└─4
└─5
└─6
└─7
└─8
└─9
这颗数一共有 6 个手机号,分别是:
12345668900
12345668901
12345678900
12345678901
15345678900
17345678900
4)判断一个手机号是不是重复的,只要在这颗树里面,逐层逐个数字查找就可以了。
5)效率分析:这种算法,插入一个新的手机号,以及查找一个手机号是否重复,效率都是很高的。
一个个以字符串形式取出存入如一个Set<String>集合和一个List集合all,因为Set集合不允许重复所以在把Set转成List other,然后all.removeAll(other);剩下的就是重复的。比树要麻烦。
- Java 0-9生成不重复五位数字验证码
网友评论