【工作笔记】Java 字符串互换判等问题

在工作中遇到这样的问题:需要统计以ABC-DEF、DEF-ABC分组的数据并把这两组数据合并。

那么现在主要解决的是如何判定ABC-DEF = DEF-ABC。

先上代码:

private Set
   
   
    
     repeatSet = new HashSet
    
    
     
     ();

 /**
 * 判断字符串是否重复
 * @param ss
 * @return true 重复,false 不重复
 */
private boolean isRepeat(String[] ss) {
	
	StringBuffer sb = new StringBuffer();
	long total = 0;
	for(String s : ss) {
		//将字符串转成askii码
		int i1 = (int) s.charAt(0);
		int i2 = (int) s.charAt(1);
		int i3 = (int) s.charAt(2);
		
		//拼接后相加 
		sb.append(i1).append(i2).append(i3);
		long temp = Long.parseLong(sb.toString());
		total = (temp + total);

		sb = new StringBuffer();
	}
	
	if(repeatSet.contains(String.valueOf(total))) {
		return true;
	}
	
	repeatSet.add(String.valueOf(total));
	return false;
	
}
    
    
   
   

思路很简单:
656667 + 686970 = 686970 + 656667
65对应ASKII码的A,以此类推,
通过‘-’分割字符串,形成字符串数组,然后分别计算A,B,C的askii码后拼接,再与D,E,F拼接后的askii码相加,
形成一串数字,存入HashSet。

这样一来,如果遇到倒序的字符串,只需要把相加的数据在SET集合中判断是否包含就行了。

因为用到了加法,感觉会有些隐患,如果有更好的方法请指点一下^_^。



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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值