题目详情
/**
* 计算字符串的完美值* @param str
* @return
*/
public static int perFact(String str){
int perFacenum=0;
int oneperfactBignum=26;//设定单字符最大的完美数
StrPerfact sf=new StrPerfact();
List<Integer> list=sf.cal(str);
//按大到小进行排序
for (int i = 0; i <list.size(); i++) {
for (int j = i+1; j < list.size(); j++) {
Integer tpme=null;
if(list.get(i)<list.get(j)){
tpme=list.get(i);
list.set(i, list.get(j));
list.set(j, tpme);
}
}
}
//计算完美数
for (int i = 0; i <list.size(); i++) {
perFacenum+=list.get(i)*oneperfactBignum;
oneperfactBignum--;
}
return perFacenum;
}
/**
* 统计单字符在字符串中出现的个数
* @param s
* @return 个数集合
*/
public List<Integer> cal(String s){
List<Integer> list=new ArrayList<Integer>();
char[] strChar=s.toCharArray();
for (int i = 0; i < strChar.length; i++) {
int count =0;
for (int j = 0; j < strChar.length; j++) {
if(s.length()<=0){
return list;
}
if(s.charAt(0)==strChar[j]){
count++;
}
}
list.add(count);
s=s.replaceAll(s.charAt(0)+"", "");
}
return list;
}
public static void main(String[] arg){
System.out.print("字符串完美数为:"+StrPerfact.perFact("asssaaa"));
}