【工作笔记】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集合中判断是否包含就行了。

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



猜你喜欢

转载自blog.csdn.net/qq_28298683/article/details/53288335