算法筆試題1-Java

網易2018校園招聘編程題真題集合java

(1)小易準備去魔法王國採購魔法神器,購買魔法神器須要使用魔法幣,可是小易如今一枚魔法幣都沒有,可是小易有兩臺魔法機器能夠經過投入x(x能夠爲0)個魔法幣產生更多的魔法幣。
魔法機器1:若是投入x個魔法幣,魔法機器會將其變爲2x+1個魔法幣
魔法機器2:若是投入x個魔法幣,魔法機器會將其變爲2x+2個魔法幣
小易採購魔法神器總共須要n個魔法幣,因此小易只能經過兩臺魔法機器產生剛好n個魔法幣,小易須要你幫他設計一個投入方案使他最後剛好擁有n個魔法幣。算法

如輸入10,輸出122。編程

import java.util.Scanner;
public class Main {
     
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);   
        int num = scanner.nextInt();
        StringBuffer sb = new StringBuffer();
        while (num > 0) {
            if (num % 2 == 1) {
                sb.append('1');
                num = (num - 1) / 2;
            } else {
                sb.append('2');
                num = (num - 2) / 2;
            }
        }
        System.out.println(sb.reverse());
    }
     
}

 

(2)獲取一個數相反數,輸出兩數之和,如輸入1325,輸出6556app

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
//此處展現瞭如何獲取控制檯輸入 Scanner scanner
= new Scanner(System.in); int num = scanner.nextInt(); int r_num = 0; while (num != 0) { r_num = r_num * 10 + num % 10; num /= 10; } System.out.println(num + r_num); } } 

(3)一個由小寫字母組成的字符串能夠當作一些同一字母的最大碎片組成的。例如,"aaabbaaac"是由下面碎片組成的:'aaa','bb','c'。牛牛如今給定一個字符串,請你幫助計算這個字符串的全部碎片的平均長度是多少。輸入"aaabbaaac",結果爲(3+2+3+1) / 4 = 2.25。spa

import java.util.List;
import java.util.ArrayList;
import java.util.Scanner;
public class Main {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String s = scanner.nextLine();
        List<String> list = new ArrayList<String>();
        if (s.length() < 2) {
            System.out.println(String.format("%.2f", s.length()));
            return ;
        }
        char pre_c = s.charAt(0), cur_c;
        StringBuffer sb = new StringBuffer();
        sb.append(pre_c);
        for (int i = 1; i < s.length(); i++) {
            cur_c = s.charAt(i);
            if (cur_c == pre_c) {
                sb.append(cur_c);
            }
            else {
                list.add(sb.toString());
                sb = new StringBuffer("" + cur_c);
            }
            pre_c = cur_c;
        }
        list.add(sb.toString());
        int t_len = 0, t_num = 0;
        for (String ss: list) {
            t_len += ss.length();
            t_num++;
        }
        System.out.println(String.format("%.2f", t_len * 1.0 / t_num));
    }
}

 PS:看別人的代碼,有簡單算法,總長度就是字符串長度,短串數量就是去重後的字符串長度。設計

相關文章
相關標籤/搜索