在工作中遇到这样的问题:需要统计以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集合中判断是否包含就行了。
因为用到了加法,感觉会有些隐患,如果有更好的方法请指点一下^_^。