碼農的聯繫方式

微博有這樣一個短租信息,其中亮點是房東把電話號碼藏在代碼中,須要能讀懂代碼才能把電話號碼解出來,這就尷尬了~java

出租信息以下:程序員

做爲一個Java程序員,看到System.out.println("聯繫方式:" + tel);這裏我就笑了,這不是咱們大java的程序員之做嘛~數組

首先分析下怎麼把手機號破解出來:code

不少語言中都有for 語句,因此代碼的大體意思顯然是迭代索引取arr的數字還原出電話號碼。索引

因此當迭代index,i == 2時,取出arr中第三位,電話號碼第一位爲1get

i == 0時,取出arr中的第一位,獲得8,微博

i == 3時,取出arr中的第四位,獲得0,和以前到數字拼起來能夠獲得電話碼前三位是180,以此類推...List

最後的手機號就是: 18013820100程序

那麼問題來了,如何把手機號隱藏存在兩個不一樣的數組中的呢?方法

一言不合就想看看怎麼樣把手機號隱藏在數組中的(閒着無聊就玩唄),而後就有了這樣的代碼:

System.out.print("----手機號生成數組---start---輸入你的手機號:");
		Scanner scanner = new Scanner(System.in);
		String str = scanner.next();
		
		List<Character> temp = new ArrayList<Character>();
		Set<Character> arrTemp = new HashSet<Character>();
		//把手機號轉成字節數組
		for(int i=0;i<str.length();i++){
			temp.add(str.charAt(i));
			arrTemp.add(str.charAt(i));
		}
		List<Integer> index = new ArrayList<Integer>(); //索引數組
		//--------------------
		List<Character> arr = new ArrayList<Character>(); //手機號數組(不重複的值)
		
		for(Character c : arrTemp){
			arr.add(c);
		}
		//---------------------
		for(Character character : temp){
			if(arr.contains(character)){
				index.add(arr.indexOf(character));
			}
		}
		
		System.out.println("----手機號索引值----"+index);
		System.out.println("----手機號數組----"+arr);
		System.out.println("----開始破解手機號----");
		String tel = "";
		for(int i:index){
			tel += arr.get(i);
		}
		System.out.println("----手機號----"+tel);

運行結果:

總感受實現的不是很好,你們有沒有好的實現方法,一塊兒分享下~

相關文章
相關標籤/搜索