/**
* 获取根据字母出现频率排序的字符串(出现频率低的排在前,频次相同根据字母从小到大排序,只限小写字母) aaddccdc ->2a3c3d -> dca
* @param srcStr
* @return
*/
public static String getOrderedStr1(String srcStr){
if (srcStr==null || srcStr.isEmpty()){
return "!error";
}
int length = srcStr.length();
for (int i = 0; i < length; i++) {
char charAt = srcStr.charAt(i);
if (charAt < 'a' || charAt > 'z'){
return "!error";
}
}
// aaddccadc
ArrayList<CustomerCharcterEntity> entityArrayList = new ArrayList<>();
for (int i = 0; i < length; i++) {
char charAtI = srcStr.charAt(i);
int charAtICount=1;
for (int j = i+1; j < length; j++) {
char charAtJ = srcStr.charAt(j);
if (charAtI==charAtJ){
charAtICount++;
}
}
CustomerCharcterEntity customerCharcterEntity = new CustomerCharcterEntity();
UUID randomUUID = UUID.randomUUID();
String toString = randomUUID.toString();
customerCharcterEntity.setId(toString);
customerCharcterEntity.setSrcCharacter(charAtI);
customerCharcterEntity.setCharacterCount(charAtICount);
entityArrayList.add(customerCharcterEntity);
}
ArrayList<CustomerCharcterEntity> entityArrayList1 = new ArrayList<>();
for (int i = entityArrayList.size() - 1; i >= 0; i--) {
CustomerCharcterEntity customerCharcterEntity = entityArrayList.get(i);
entityArrayList1.add(customerCharcterEntity);
}
HashMap<Character, Integer> characterIntegerHashMap = new HashMap<>();
for (CustomerCharcterEntity customerCharcterEntity : entityArrayList1) {
Character srcCharacter = customerCharcterEntity.getSrcCharacter();
Integer characterCount = customerCharcterEntity.getCharacterCount();
characterIntegerHashMap.put(srcCharacter,characterCount);
}
ArrayList<CustomerCharcterEntity> charcterEntityArrayList = new ArrayList<>();
characterIntegerHashMap.forEach((k,v)->{
CustomerCharcterEntity customerCharcterEntity = new CustomerCharcterEntity();
customerCharcterEntity.setSrcCharacter(k);
customerCharcterEntity.setCharacterCount(v);
charcterEntityArrayList.add(customerCharcterEntity);
});
charcterEntityArrayList.sort(new Comparator<CustomerCharcterEntity>() {
@Override
public int compare(CustomerCharcterEntity o1, CustomerCharcterEntity o2) {
Character srcCharacter = o1.getSrcCharacter();
Integer characterCount = o1.getCharacterCount();
Integer characterCount1 = o2.getCharacterCount();
Character srcCharacter1 = o2.getSrcCharacter();
if (characterCount<characterCount1){
if (srcCharacter < srcCharacter1){
return -1;
}else if (srcCharacter > srcCharacter1){
return 1;
}else {
return 0;
}
}else if (characterCount>characterCount1){
if (srcCharacter < srcCharacter1){
return -1;
}else if (srcCharacter > srcCharacter1){
return 1;
}else {
return 0;
}
}else {
if (srcCharacter < srcCharacter1){
return -1;
}else if (srcCharacter > srcCharacter1){
return 1;
}else {
return 0;
}
}
}
});
StringBuilder stringBuilder = new StringBuilder();
charcterEntityArrayList.forEach(e->{
Character srcCharacter = e.getSrcCharacter();
stringBuilder.append(srcCharacter);
});
String toString = stringBuilder.toString();
return toString;
}
class CustomerCharcterEntity {
private String id;
private Character srcCharacter;
private Integer characterCount;

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public Character getSrcCharacter() {
return srcCharacter;
}

public void setSrcCharacter(Character srcCharacter) {
this.srcCharacter = srcCharacter;
}

public Integer getCharacterCount() {
return characterCount;
}

public void setCharacterCount(Integer characterCount) {
this.characterCount = characterCount;
}

@Override
public String toString() {
return "CustomerCharcterEntity{" +
"id='" + id + '\'' +
", srcCharacter=" + srcCharacter +
", characterCount=" + characterCount +
'}';
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
CustomerCharcterEntity that = (CustomerCharcterEntity) o;
return Objects.equals(id, that.id) &&
Objects.equals(srcCharacter, that.srcCharacter) &&
Objects.equals(characterCount, that.characterCount);
}

@Override
public int hashCode() {
return Objects.hash(id, srcCharacter, characterCount);
}
}
posted on 2025-03-19 17:11  CoderOilStation  阅读(9)  评论(0)    收藏  举报