以下の問題を解くための手法として「2つの文字列S, Tについて、Sの各文字を並べ替えてTに一致させられるかを考える場合、SとTの各文字を昇順に並べ替えてできる文字列どうしを比較して一致しているかどうかを判定する」と公式で解説されており、ライブラリを用意していなかったので作成しました
AtCoder Beginner Contest 324 D - Square Permutation
import java.util.Arrays;
public final class DigitSorter {
/**
* 整数の各桁を昇順に並べた文字列を返す
* @param n 文字列として取得したい整数
* @param minLen 並べ替え後の文字列の最小長
* @return 最小長を持つよう0埋めにより正規化された、整数の各桁を昇順に並べた文字列
*/
public static final String sortByDigits(long n, int minLen) {
final String nAsString = String.valueOf(n);
final int appCnt = Math.max(0, minLen - nAsString.length());
StringBuilder sb = new StringBuilder(appCnt + nAsString.length());
for (int i = 0; i < appCnt; ++i) {
sb.append(0);
}
return sortByDigits(sb.append(nAsString).toString());
}
/**
* 構成する各文字を昇順に並べた文字列を返す
* @param str 各文字を並べ替える前の文字列
* @return 構成する各文字を昇順に並べた文字列
*/
public static final String sortByDigits(String str) {
char[] strAsCharArray = str.toCharArray();
Arrays.sort(strAsCharArray);
return String.valueOf(strAsCharArray);
}
}