面试中有可能遇到的算法题--Java算法
来源:互联网 发布:sql语句别名 编辑:程序博客网 时间:2024/04/27 19:46
面试中有可能遇到的算法题--Java算法
最近别人都问我是不是发神经,怎么突然离职了。我也只是呵呵一笑,不以为然。程序猿离职无需理由,做了两年6个月还没有跳过槽就更神奇了。
这个只有程序猿才知道。
好了,废话少说。
最近面试中遇到了一些Jave算法的题目,跟各位分享分享,毕竟你也有可能遇到,这个比在街上遇到郭敬明跟姚明走在一起(还手牵手)的机会更大。
题目1:
消息加密问题。给定一个长度为N字符串Msg,为了方便在网上传输而不被人截获,用一个长度为N的整数数组Key去加密,加密过程如下:Msg中第i(从0开始计数)个字符新的位置应该是Key[i]。同时给定一个整数count,表示整个加密将持续count次。求加密过后的字符串。
测试用例
0)
"abc"
{1,2,0}
1
Returns:"cab"
1)
"abcde"
{4, 3, 2,1, 0}
1
Returns:"edcba"
2)
"abcde"
{4, 3, 2,1, 0}
2
Returns:"abcde"
个人做法:
private static String encryptStr1(String msg, int key[]) { String result = ""; char[] arr = msg.toCharArray(); for (int j = 0; j < key.length; j++) { result = result + arr[key[j]]; } return result; } private static String encryptStr(String msg, int key[], int count) { String result = ""; String temp = ""; for (int i = 0; i < count; i++) { if (i == 0) { result = encryptStr1(msg, key); temp = result; } else { result = encryptStr1(temp, key); temp = result; } } return result; }
public static void main(String[] args) { // write your code here String msg = "abcd"; int count = 3; int key[] = new int[]{2, 3, 1, 0}; String result = encryptStr(msg, key, count); System.out.println(msg + " ====> 加密后的结果是 = " + result); }
题目2:
给定一个由0-9纯数字组成的字符串,假设字符串的向量是由所有数字的乘积组成,字符串的标量是由所有数字的累加和组成。比如”12340”的向量是1*2*3*4*0=0,标量是1+2+3+4+0=10; ”456”的向量是4*5*6=120,标量是4+5+6=15; 现给定一个字符串数组,请按字符串的向量降序排序,如果向量一样大,则按标量降序排序,如果还一样大,则保持原来的顺序。
测试样例1:输入是{“1230”, “304”}, 程序输出{“304”, “1230”};
测试样例2:输入是{“38”, “46”, “47”}, 程序输出{“47”, “38”, “46};
个人做法:
private static int calVector(String value) { int result = 1; char arr[] = value.toCharArray(); for (int i = 0; i < arr.length; i++) { char c = arr[i]; int val = Integer.parseInt(c + ""); result = result * val; }// System.out.println("向量值是 = " + result); return result; } private static int calScalar(String value) { int result = 0; char arr[] = value.toCharArray(); for (int i = 0; i < arr.length; i++) { char c = arr[i]; int val = Integer.parseInt(c + ""); result = result + val; }// System.out.println("标量值是 = " + result); return result; } private static String compareValues(String value1, String value2) { String result = ""; int vectorVal1 = calVector(value1); int scalarVal1 = calScalar(value1); int vectorVal2 = calVector(value2); int scalarVal2 = calScalar(value2); if (vectorVal1 == vectorVal2 && scalarVal1 == scalarVal2) { result = value1; } else { if (vectorVal2 > vectorVal1) { result = value2; } else { if (scalarVal2 > scalarVal1) { result = value2; } else { result = value1; } } } return result; }
public static void main(String[] args) { // write your code here String arr[] = {"38", "46", "47", "49"}; for (int i = 0; i < arr.length; i++) { String maxStr = arr[i]; int n = i; // 最大数的索引 for (int j = i + 1; j < arr.length; j++) { if (!compareValues(maxStr, arr[j]).equals(maxStr)) { maxStr = arr[j]; n = j; } } arr[n] = arr[i]; arr[i] = maxStr; } System.out.println("排序之后:"); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } }
做是做出来了,不过感觉自己的算法水平真的一般,如果还有更好的做法,请务必分享出来让大家互相学习。
看来自己也要好好学习一下算法的知识了,后续文章如果有更好的题目我也会分享出来让大家知道,谢谢啦~
- 面试中有可能遇到的算法题--Java算法
- 面试中遇到的算法题分析
- 面试中遇到的算法题
- 分享Java面试中遇到的一些经典算法题目
- Java面试中遇到的一些经典算法题目
- 分享Java面试中遇到的一些经典算法题目
- Java面试中遇到的一些经典算法题目
- Java面试中遇到的一些经典算法题目
- 分享Java面试中遇到的一些经典算法题目
- 面试中遇到的算法题(一)
- java面试中常遇到的算法笔试题
- 面试遇到的两道算法题
- 面试遇到的一个算法题
- 面试中遇到的一道算法题,请各位对我的算法指点一下
- 面试中遇到递归算法题别慌--常见递归算法题的解题思路
- 面试中遇到递归算法题别慌--常见递归算法题的解题思路
- 分享Java面试中遇到的一些经典算法题目 (转)
- 面试过程中遇到的几个简单的算法
- android:lineSpacingExtra,android:lineSpacingMultiplie
- lara with tp
- Android 开发中使用 SQLite 数据库
- CGAL编程实现点集的Delaunay三角剖分和Voronoi图
- LSGO软件技术团队对外技术交流
- 面试中有可能遇到的算法题--Java算法
- 互联网协议入门(二)
- 【POJ解题】:POJ 2141解题报告
- 使用声明式启动job任务时报JobInitializationPlugin或XMLSchedulingDataProcessorPlugin实例化失败 解决方案
- ubuntu 15.04下使用Eclipse搭建Hadoop开发环境
- android之Fragment
- java项目中添加JAR包的方法
- SQL NOW() 函数
- 数组指针与指针数组