算法

来源:互联网 发布:手机科研数据处理软件 编辑:程序博客网 时间:2024/06/05 09:33
package com.test;


import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;


public class StringUtils {
public static final String SPLIT_COMMA = ",";


/**

* @param str
* @return
*/
public static String replaceHeadTailComma(String str) {
if (org.apache.commons.lang.StringUtils.isEmpty(str)) {
return "";
}
str = str.replaceAll("^,", "").replaceAll(",$", "");
return str;
}


/**

* @param strArr
* @return
*/
public static int[] stringToInt(String[] strArr) {
if (strArr == null) {
return new int[0];
}
int[] nArr = new int[strArr.length];
for (int idx = 0; idx < strArr.length; idx++) {
nArr[idx] = Integer.valueOf(strArr[idx]);
}
return nArr;
}


/**

* @param supperedDiplexerType
* @return
*/
public static int[] getDiplexerTypes(String supperedDiplexerType,
boolean isLow) {
if (org.apache.commons.lang.StringUtils.isEmpty(supperedDiplexerType)) {
return new int[0];
}
if (isLow) {
supperedDiplexerType = supperedDiplexerType.replaceAll("\\d+H", "")
.replaceAll(",+", ",").replaceAll("L", "");
} else {
supperedDiplexerType = supperedDiplexerType.replaceAll("\\d+L", "")
.replaceAll(",+", ",").replaceAll("H", "");
}
supperedDiplexerType = replaceHeadTailComma(supperedDiplexerType);
String[] strArray = supperedDiplexerType.split(SPLIT_COMMA);
int[] resArr = new int[strArray.length];
for (int idx = 0; idx < resArr.length; idx++) {
resArr[idx] = org.apache.commons.lang.NumberUtils.stringToInt(strArray[idx]);
}
return resArr;
}


/**

* @param nArr
* @return
*/
public static Set<Integer> getSumOfItems(Integer[] nArr) {
Set<Integer> resSet = new HashSet<Integer>();
int sumTowItems = 0, sumThreeItems = 0;
for (int i = 0; i < nArr.length; i++) {
resSet.add(nArr[i]);
for (int j = 0; j < nArr.length; j++) {
if (i != j) {
sumTowItems = nArr[i] + nArr[j];
resSet.add(sumTowItems);
}
for (int n = 0; n < nArr.length; n++) {
if ((i != j) && (j != n) && (i != n)) {
sumThreeItems = nArr[i] + nArr[j] + nArr[n];
resSet.add(sumThreeItems);
}
}
}
}
return resSet;
}


/**

* @param nArr
* @return
*/
public static Set<Integer> getSumOfItems(int[] nArr) {
Set<Integer> resSet = new HashSet<Integer>();
int sumTowItems = 0, sumThreeItems = 0;
for (int i = 0; i < nArr.length; i++) {
resSet.add(nArr[i]);
for (int j = 0; j < nArr.length; j++) {
if (i != j) {
sumTowItems = nArr[i] + nArr[j];
resSet.add(sumTowItems);
}
for (int n = 0; n < nArr.length; n++) {
if ((i != j) && (j != n) && (i != n)) {
sumThreeItems = nArr[i] + nArr[j] + nArr[n];
resSet.add(sumThreeItems);
}
}
}
}
return resSet;
}

public static void main(String[] args) {
int[] bandArr = new int[] { 1, 4 };
String diplexerType = "2L,2H,3H,1L2H,1L3H,2L2H,2L3H";
int[] resArr = getDiplexerTypes(diplexerType, true);
System.out.println("\n================================");
for (int idx = 0; idx < resArr.length; idx++) {
System.out.print(resArr[idx] + "\t");
}
Set<Integer> resSet = getSumOfItems(resArr);
System.out.println("\n================================");
for (Iterator iter = resSet.iterator(); iter.hasNext();) {
Integer num = (Integer) iter.next();
System.out.print(num + "\t");
}
boolean flag = resSet.contains(bandArr[0]);
System.out.println("\ncontains low:" + flag);
resArr = getDiplexerTypes(diplexerType, false);
System.out.println("\n================================");
for (int idx = 0; idx < resArr.length; idx++) {
System.out.print(resArr[idx] + "\t");
}
resSet = getSumOfItems(resArr);
System.out.println("\n================================");
for (Iterator iter = resSet.iterator(); iter.hasNext();) {
Integer num = (Integer) iter.next();
System.out.print(num + "\t");
}
flag = resSet.contains(bandArr[1]);
System.out.println("\ncontains high:" + flag);
}
}
0 0
原创粉丝点击