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