面试过程中遇到的几个简单的算法
来源:互联网 发布:看台湾电视直播软件 编辑:程序博客网 时间:2024/04/27 10:16
冒泡排序
把一个数字转换成相应的汉字显示,5001:五千零一
看HashSet的输出顺序,和放入进去的先后是没有一定关系的,无序
按空格把字符串反序输出,如:I love China 输出为 CHina love I
给出n,输出N行的图形
1
2 3
4 5 6
7 8 9 10
依次类推将字符串倒序输出 love 输出 evol
合并两个从小到大顺序的数组,并排序,从小到大
下面是代码,都是简单的实现,可能都不是最好的算法,如果有什么好的算法,希望可以有人可以告知哦,学习一下!
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class Test {
//冒泡排序
public static void sortArray(int arrs[]) {
int temp = arrs[0];
System.out.println("排序之前的数组:");
for (int i = 0; i < arrs.length; i++) {
System.out.print(arrs[i] + " ");
}
System.out.println("");
for (int i = 0; i < arrs.length; i++) {
for (int j = i + 1; j < arrs.length; j++) {
if (arrs[j] < arrs[i]) {
temp = arrs[i];
arrs[i] = arrs[j];
arrs[j] = temp;
}
}
}
System.out.println("排序之后的数组:");
for (int i = 0; i < arrs.length; i++) {
System.out.print(arrs[i] + " ");
}
}
//把一个数字转换成相应的汉字显示,5001:五千零一
public static String transferToUpper(Long num) {// 5001
Map map = new HashMap();
// 把汉字的零到九放到Map中如果用到直接取
map.put("cn_0", "零");
map.put("cn_1", "一");
map.put("cn_2", "二");
map.put("cn_3", "三");
map.put("cn_4", "四");
map.put("cn_5", "五");
map.put("cn_6", "六");
map.put("cn_7", "七");
map.put("cn_8", "八");
map.put("cn_9", "九");
map.put("zh_2", "十");
map.put("zh_3", "百");
map.put("zh_4", "千");
String str = num.toString();
StringBuffer strsb = new StringBuffer(str);
strsb = strsb.reverse();// 将要数据转化成字符串,倒序,以便从个位开始
int len = strsb.length();
StringBuffer sb = new StringBuffer("");
for (int i = 0; i < len; i++) {
char keynum = strsb.charAt(i);
String key = "cn_" + keynum;
if (map.get(key) != null) {
if (i % 4 != 2 && keynum == '0') {
} else {
// 把十百千输出
if (map.get("zh_" + (i % 4 + 1)) != null && keynum != '0') {
sb.append(map.get("zh_" + (i % 4 + 1)));
if (keynum == '1' && (i % 4 + 1 == 2) && i + 1 == len) {
// 如果是最高位,例如是11亿,直接输出十一亿而不输出一十一亿
} else {
// 输出数字
sb.append(map.get(key));
}
} else {
// 输出数字
sb.append(map.get(key));
}
}
}
if (i == 7 && len > 8) {
// 判断是否需要输出亿
sb.append("亿");
} else if (i == 3 && len > 4) {
// 判断是否需要输出万
sb.append("万");
}
}
if (sb != null) {
// 将字符串倒序返回,在刚开始做的反转
return sb.reverse().toString();
}
return null;
}
//看HashSet的输出顺序
public static void testSet() {
System.out.println("放入的顺序是:");
Set set = new HashSet();
set.add(20);
System.out.print(20 + " ");
set.add(2);
System.out.print(2 + " ");
set.add(12);
System.out.print(12 + " ");
set.add(34);
System.out.print(34 + " ");
set.add(21);
System.out.print(21 + " ");
set.add(14);
System.out.print(14 + "\n");
Iterator it = set.iterator();
System.out.println("输出的顺序是:");
while (it.hasNext()) {
System.out.print(it.next() + " ");
}
}
//按空格把字符串反序输出,如:I love China 输出为China love I
public static String reverseBySpace(String str) {
if (str != null) {
StringBuffer sb = new StringBuffer("");
if (str.indexOf(" ") != -1) {
String[] arrs = str.split(" ");// 空格分隔,生成数组
int len = arrs.length;
for (int i = 0; i < (int) ((len - 1) / 2) + 1; i++) {
// 将数组的前半部分与后半部分换位置
String temp = arrs[i];
arrs[i] = arrs[len - 1 - i];
arrs[len - 1 - i] = temp;
}
for (int i = 0; i < len; i++) {
sb.append(arrs[i] + " ");
}
// 去掉最后一个空格返回新字符串
return sb.substring(0, sb.length() - 1);
} else {
// 不含有空格的,直接返回原来字符串
return str;
}
}
return str;
}
/*1
*2 3
*4 5 6
*7 8 9 10
* 依次类推
* 给出n,输出N行的图形
*/
public static int printG(int n){
if(n==1){
System.out.println(1);
return 1;
}else{
int s=printG(n-1);
for(int i=1;i<=n;i++){
System.out.print((s+=1)+" ");
}
System.out.println("");
return s;
}
}
//将字符串倒序输出
public static String reverseString(String str){
return str.length() > 0 ? reverseString(str.substring(1)) + str.charAt(0): "" ;
}
//合并两个从小到大顺序的数组,并排序,从小到大
public static int [] combineArray(int []a,int []b){
if(a==null || a.length==0){
return b;
}
if(b==null || b.length==0){
return a;
}
int s[]=new int[a.length+b.length];
System.out.println("length:===="+s.length);
int sindex=0;
int j=0;
for(int i=0;i<a.length;i++){
for(;j<b.length;j++){
if(a[i]<b[j]){
s[sindex++]=a[i];
break;
}else{
s[sindex++]=b[j];
continue;
}
}
//如果b已经全部排出序,a剩下的直接追加到数组后面
if(j>=b.length){
s[sindex++]=a[i];
}
}
//如果a已经全部排出序,b剩下的直接追加到数组后面
if(j<b.length-1){
for(;j<b.length;j++){
s[sindex++]=b[j];
}
}
return s;
}
public static void main(String[] args) {
int[] arrs = new int[] { 1, 9, 0, 7, 8, 3, 8, 78, 98, 23, 46 };
Test.sortArray(arrs);
System.out.println(Test.transferToUpper(Long.valueOf("11011110050")));
Test.testSet();
System.out.println(Test.reverseBySpace("I love China"));
Test.printG(7);
int a[]=new int[]{3,8,9,11,34,98,193};
int b[]=new int[]{1,2,3,5,6,7,9,56};
for(int i=0;i<a.length;i++){
System.out.print(a[i]+" ");
}
System.out.println("");
for(int i=0;i<b.length;i++){
System.out.print(b[i]+" ");
}
System.out.println("");
int [] r=combineArray(b, a);
for(int i=0;i<r.length;i++){
System.out.print(r[i]+" ");
}
System.out.println("");
}
}
- 面试过程中遇到的几个简单的算法
- 求职面试过程中遇到的几个技术题
- 面试过程中遇到的问题
- 面试过程中遇到的问题
- 记录几个前端笔/面试中常遇到的算法
- 面试中遇到的算法题分析
- 面试中遇到的算法题
- 在毕设过程中遇到的几个小问题
- LAMP环境搭建过程中遇到的几个错误
- Hibernate学习过程中遇到的几个小问题
- 安装sparklyr包过程中遇到的几个ERROR
- Oprofile 编译使用过程中遇到的几个错误
- WebSocket开发过程中遇到的几个小问题
- 遇到的几个算法题
- 此贴,将记录面试过程中遇到的问题和平时遇到的面试问题
- 几个简单的算法
- 面试中有可能遇到的算法题--Java算法
- 数组的几个面试算法
- Javascript学习笔记(一)
- HDU 1281
- linux系统下安装apache、tomcat以及JDK
- hdu 1562 Guess the number
- 这几天调串口遇到的问题
- 面试过程中遇到的几个简单的算法
- Andrew Stankevich's Contest #10 Solution
- TD中查询出错: Operation not allowed: <Schema>.<Table> table header has invalid partitioning.
- py 类,类成员(变量、方法)、继承、关键方法、with、callback、exec、eval、字符转型等,测试
- 读《Learning Perl》
- CATransform3DMakeRotation 说明
- 容斥
- 给出一个函数来合并两个字符串A和B。字符串A的后几个字节和字符串B的前几个字节重叠
- hdu 1372 Knight Moves (简单bfs,囧!)