記錄25天找工作的一種反思(到底適合不適合這條路)

樓主是培訓出來的,初次來到深圳。結果投真實簡歷。接到的電話少的可憐,不到8個。面試的公司還都是培訓公司,來來回回

的坐地鐵之類的還挺累,接到面試通知很高興,飯都不吃直接先去面試。多的話不說了。。。。。都是淚。不清楚到底該不該

造假,上家面試公司也挺遠,在一個小房間裏,我去的時候連面試都不想去了,跟傳銷一樣。 結果問我是不是培訓機構的,我沒

說話,然後交流了一番,說這個看老闆  畢竟他做不了主。看了我的博客覺得我還是能夠上手的。時間越長,自己的壓力也越大。畢竟深圳這個城市只適合去打拼,而不是給你時間去沉澱。好久沒寫博客了,來自阿里巴巴的一位大哥github。

 

問題一:

小易準備去魔法王國採購魔法神器,購買魔法神器需要使用魔法幣,但是小易現在一枚魔法都沒有,但是小易有兩臺魔法機器

可以通過投入x(x可以爲0)個魔法幣產生更多的魔法幣。

魔法機器1:如果投入x個魔法幣,魔法機器會將其變爲2x+1個魔法幣

魔法機器2:如果投入x個魔法幣,魔法機器會將其變爲2x+2個魔法幣

小易採購魔法神器總共需要n個魔法幣,所以小易只能通過兩臺魔法機器產生恰好n個魔法幣,小易需要你幫他設計一個投入

方案使他最後恰好擁有n個魔法幣。

輸入描述:輸入包括一行,包括一個正整數n(1<=n<=10^9),表示小易需要的魔法幣數量。

輸出描述:輸出一個字符串,每個字符表示該次小易選取投入的魔法機器。其中只包含字符'1'和'2'。

輸入例子1:10

輸出例子1:122

分析:明確魔法機器1只能產生奇數,魔法機器2只能產生偶數。

 

package org.java.Test;

import java.util.Scanner;

/**
 * @author Lee
 * @date:2018.11.6   12.30
 * 功能:獲得特定數量硬幣問題
 * */
public class CoinNumber {
	//解題關鍵:明確魔法機器1只能產生奇數,魔法機器2只能產生偶數即可
	public static void main(String[] args) {
		System.out.println("請輸入要獲得的硬幣數量:");
		Scanner  scanner=new Scanner(System.in);
		int coincount=scanner.nextInt();
		StringBuilder sb=new StringBuilder();
		while(coincount>=1){
			//偶數情況
			if(coincount%2==0){
				coincount=(coincount-2)/2;
				sb.append("2");
				//奇數情況
			}else{
				coincount=(coincount-1)/2;
				sb.append("1");
			}
		}
		//輸出反轉後的字符串
		System.out.println(sb.reverse());
	}

}

帶輸入異常處理判斷的版本

package org.java.Test;

import java.util.Scanner;

/**
 * @author Lee
 * @date:2018.11.6   12.44
 * 功能:獲得特定數量硬幣問題
 * */
public class CoinNumber {
	//解題關鍵:明確魔法機器1只能產生奇數,魔法機器2只能產生偶數即可
	public static void main(String[] args) {
		System.out.println("請輸入要獲得的硬幣數量:");
		Scanner  scanner=new Scanner(System.in);
		boolean flag=true;
		while(flag){
			try {
				int coincount=scanner.nextInt();
				StringBuilder sb=new StringBuilder();
				while(coincount>=1){
					//偶數情況
					if(coincount%2==0){
						coincount=(coincount-2)/2;
						sb.append("2");
						//奇數情況
					}else{
						coincount=(coincount-1)/2;
						sb.append("1");
					}
				}
				//輸出反轉後的字符串
				System.out.println(sb.reverse());
				flag=false; //程序結束
			} catch (Exception e) {
				System.out.println("輸入數據類型不匹配,請您重新輸入:");
				scanner.nextLine();
				continue;
			}
		}
		
		}
		
	}


 

問題二:求 "相反數"問題

爲了得到一個數的"相反數",我們將這個數的數字順序顛倒,然後再加上原先的數得到"相反數"。例如,爲了得到1325的

“相反數”,首先我們將該數的數字順序顛倒,我們得到5231,之後再加上原先的數,我們得到5231+1325=6556。如果顛倒

之後的數字有前綴零,前綴零將會被忽略。例如n=100,顛倒之後是1.

輸入描述:輸入包括一個整數n(1<=n<=10^5)

輸出描述:輸出一個整數,表示n的相反數

輸入例子:1325

輸出例子:6556

分析:利用reverse()方法反轉字符串然後再將字符串轉換成int類型的整數。

1).String轉Int

String str="123";

int a=Integer.parseInt(str);

String str="123";

int a=Integer.valueof(str).intValue();

2).next()和nextLine()的區別

在Java中輸入字符串有兩種方法,就是next()和nextLine().兩者的區別就是:nextLine()的輸入是碰到回車就終止輸入,而next()方法是碰到空格,回車,Tab鍵都會被視爲終止符。所以next()不會得到帶空格的字符串,而nextLine()可以得到帶空格的字符串。

package org.java.Test;

import java.util.Scanner;

/**
 * @author Lee
 * @date: 2018.11.6  12.57
 * 功能:求"相反數"問題
 * */
public class OppositeNumber {
	/**
	 * 解題關鍵:String轉Int;next()與nextLine()的區別
	 * */
	public static void main(String[] args) {
		System.out.println("請輸入一個整數:");
		Scanner scanner=new Scanner(System.in);
		String s=scanner.next();
		//將字符串轉換成數字
		int  number1=Integer.parseInt(s);
		//將字符串倒序後轉換成數字
		//因爲Integer.parseInt()的參數類型必須是字符串所以必須加上toString()
		int number2=Integer.parseInt(new StringBuffer(s).reverse().toString());
		System.out.println(number1+number2);

	}

}

這時候我們有可以看看StringBuffer與StringBuilder的區別:

StringBuffer:

 public synchronized StringBuffer append(Object obj) {
        super.append(String.valueOf(obj));
        return this;
    }

    public synchronized StringBuffer append(String str) {
        super.append(str);
        return this;
    }

StringBuilder:

public StringBuilder append(char[] str, int offset, int len) {
        super.append(str, offset, len);
        return this;
    }

    public StringBuilder append(boolean b) {
        super.append(b);
        return this;
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章