简单面试算法题
来源:互联网 发布:无尽的传说2 mac 破解 编辑:程序博客网 时间:2024/06/18 09:16
1.①有未知字符串长度如”AAA&&BB”,以”&&”为分隔符,将字符串分割成字符串数组[“AAA”,”BB”]。(不能用系统分割符)
/* * 这种做法没有判断字符串最前面和最后面是否有"&&" */public static void main(String[] args) { String strs = "AA&&BB&&CC"; char[] chars = strs.toCharArray(); List<String> strList = new ArrayList<String>(); StringBuilder builder = new StringBuilder(); for (int i = 0; i < chars.length; i++) { if (chars[i] == '&' && chars[i + 1] == '&') { i++; strList.add(builder.toString()); builder = new StringBuilder(); continue; } builder.append(chars[i]); } strList.add(builder.toString()); int size = strList.size(); String[] strLs = (String[]) strList.toArray(new String[size]); for (int i = 0; i < strLs.length; i++) { System.out.println(strLs[i]); }}
②将数组[“AAA”,”BB”]合并成字符串”AAA&&BB”。
public static void main(String[] args) { String[] strs = new String[]{"AA","BB","CC"}; StringBuilder builder = new StringBuilder(); for (int i = 0; i < strs.length; i++) { if (i != 0) { builder.append("&&"); } builder.append(strs[i]); } System.out.println(builder);}
2.求出不大(小)于N的质数。
3.1000个范围在[0-999]的数,求出两个相同的数。
for (int i = 0; i < 1000; i++) { for (int j = i + 1; j < 1000; j++) { if (i != j && b[i] == a[i]) { System.out.println(b[i]); return; } }}
4.有1.2…N个人围成一个圈报数,当报到M的时候出列。求剩下是哪个人?
public static void main(String[] args) { List<Integer> persons = new ArrayList<>(); int M = 5; // 报数5出列 for (int i = 0; i < 10; i++) { persons.add(i); } int j = 1; // 报数到N int i = 0; // 记录移除哪个 boolean isFirst = true; while (true) { if (persons.size() == 1) { System.out.println(persons.get(0)); return; } if (!isFirst) { i++; j++; } isFirst = false; // 第一次赋值不要自加 if (persons.size() >= M) { // List大于M的时候用这里 System.out.println(">M i=" + i + " ,j =" + j); if (j == M) { persons.remove(i); if (persons.size() != i) { // 上面移除了一条,所以会出现等于的情况 /* * 只有当不是最后一条的时候才需要减一 因为List删除一条会补回上去的,若是是最后一条的话 * 需要重置i,而不是减一 */ i--; } else { /* * 本来重置应该是0的。但是在程序一开始的时候就加了1, 所以是为-1; */ i = -1; } j -= M; } if (i == persons.size()) { /* * 报到最后一个尾部的时候不够M个,要从头开始数过 当i == persons.size()的时候就是第一个了。 * 所以将i制为1 */ i = 0; } } else { // List小于M的时候用这里 System.out.println("--<M i=" + i + " ,j =" + j); if (i > persons.size() - 1) { i = 0; } if (j == M) { // j是从0开始数的 persons.remove(i); j -= M; } } }}
5.计算26个英文字母的组合算法。
6.判断一个数是否是回文数(12321、1245421等)
public static void main(String[] args) { char[] chars = new char[]{'1','2','3','2','1'}; int size = chars.length; int tag = 0; for(int i = 0; i < size / 2; i++) { if (chars[i] == chars[size - i - 1]) { tag++; } } if (size % 2 == 0 && tag == size / 2) { System.out.println("it's true"); } else if (size % 2 != 0 && tag == (size - 1) / 2) { System.out.println("it's true"); } else { System.out.println("it's false"); }}
7.求出1000以内的完数。(6=1+2+3)
0 0
- 简单面试算法题
- 微软面试简单算法题目
- 简单的面试算法题目
- 微软面试中简单的算法题目
- 面试算法题1
- 面试算法题
- 面试算法题2
- 面试算法题3
- 面试算法题4
- 面试算法题5
- 面试算法题6
- 转:面试算法题
- 面试算法题!
- 面试算法题1
- 面试算法题
- 面试算法题
- 微软面试算法题
- java面试算法题
- IOS开发学习笔记(三)
- Idea中集成lombok,对getter/setter说再见
- 【STM32】STM32之蓝牙透传模块(昇润科技HY-254124 V8)
- Sass 和 SCSS的区别
- 2013第四届蓝桥杯C/C++ C组省赛题解 八题
- 简单面试算法题
- 深度神经网络(DNN)反向传播算法(BP)
- sublime配置等
- springmvc基础知识
- GDB寄存器和内存
- C++的高级特性
- 用charles拦截android设备https,证书无效的解决方法
- LeetCode 371.Sum of Two Integers
- Julia :迎接0.6的到来