a~z 包括大小写与 0~9 组成的 N 个数, 用最快的方式把其中重复的元素挑出来
题目
a~z 包括大小写与 0~9 组成的 N 个数, 用最快的方式把其中重复的元素挑出来。
解析
本题中已经限制了可能出现字符,他们对应的ascii为
- a-z:97~122,
- A-Z:65-90
- 0-9:48~57
所以这里只需要用位图法来存储,并且之用128位即可,就是4个长度的int数组,
在操作过程中,如果数组中已经设置了值,则说明当前遍历的为重复,打印出来即可
否则,将这个值设置到数组中,整体思路与位排序大致一致,复杂度为O(n)
代码
1 | public static void findSameChar(String str) |
看下实验结果:1
2
3
4
5public static void main(String args[])
{
String str="helloworld1232";
findSameChar(str);
}
lol2
参考
- July 微软面试100题 第84.1题
本作品采用[知识共享署名-非商业性使用-相同方式共享 2.5]中国大陆许可协议进行许可,我的博客欢迎复制共享,但在同时,希望保留我的署名权