码农的联系方式

微博有这样一个短租信息,其中亮点是房东把电话号码藏在代码中,需要能读懂代码才能把电话号码解出来,这就尴尬了~

出租信息如下:

220401_5PXj_563338.jpg

作为一个Java程序员,看到System.out.println("联系方式:" + tel);这里我就笑了,这不是我们大java的程序员之作嘛~

首先分析下怎么把手机号破解出来:

很多语言中都有for 语句,所以代码的大致意思显然是迭代索引取arr的数字还原出电话号码。

所以当迭代index,i == 2时,取出arr中第三位,电话号码第一位为1

i == 0时,取出arr中的第一位,得到8,

i == 3时,取出arr中的第四位,得到0,和之前到数字拼起来可以得到电话码前三位是180,以此类推...

最后的手机号就是: 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);

运行结果:

221552_BiUA_563338.png

总感觉实现的不是很好,大家有没有好的实现方法,一起分享下~

转载于:https://my.oschina.net/zhengweishan/blog/701123

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值