微博有这样一个短租信息,其中亮点是房东把电话号码藏在代码中,须要能读懂代码才能把电话号码解出来,这就尴尬了~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);
运行结果:
总感受实现的不是很好,你们有没有好的实现方法,一块儿分享下~