次のようにコードをコピーします。
/**
* 名前: 配列内の要素の最も多くの繰り返しの数と回数を見つけます。
* 説明:
* 配列内の要素は繰り返される可能性があります。このメソッドは、最も多くの繰り返しが行われた数値を見つけて、その繰り返し回数を返します。
* ただし、この配列の最大の要素が何かを知る必要があります。それを判断できないと、それは悲劇になります。
*
* @param 配列ターゲット配列;
* max 配列内のデータの最大値。
* @return 最も多くの繰り返しが行われた数 (value) と繰り返しの数 (maxCount) を含むマップ コレクションを返します。
* 内部例外が発生し、デフォルトでは 0 を返します。
* @throws
* @著者ヤン・ユアン
*/
public static Map<String, Integer> arraySearch(int[] array,int max){
//結果の収集
Map<String, Integer> resultMap = new HashMap<String, Integer>();
//繰り返し回数
int maxCount = 0;
// 繰り返し回数が最も多い番号
int 値 = 0;
試す{
//各要素の出現数を格納するためにデータ配列を初期化します
int[] dataArray = 新しい int[max+1];
// 検索する配列をトラバースし、各要素を添字として使用し、データ配列を直接見つけて、+1 演算を実行して、その配列が 1 回出現することを示します
for(int i : 配列){
データ配列[i]++;
}
// データ配列の最大値を検索します
for(int i=0;i<dataArray.length;i++){
if(dataArray[i]>maxCount){
maxCount=データ配列[i];
値=i;
}
}
}catch (例外 e) {}
resultMap.put("maxCount", maxCount);
resultMap.put("値", 値);
結果マップを返します。
}
/**
* 名前: 2 つの文字列のサイズを比較します。
* 説明: 比較ルールはデータベース内の順序による影響と一致します。
* Null は自動的に空に変換され、空の文字列が最大になります。
*
* @param first 比較する最初の文字列。
* Second 比較される 2 番目の文字列。
* @return first は Second より大きく、正の数を返します。
* first は Second と等しく、0 を返します。
* first は Second より小さいため、負の数を返します。
* 内部例外はデフォルトで 0 を返します。
※戻り値は固定値ではありません~~;
* @throws
* @著者ヤン・ユアン
*/
public static int CompareString(最初の文字列,2番目の文字列){
int 結果 = 0;
試す{
//nullから空へ
first = first==null?"":first;
秒 = 秒==null?"":秒;
//繰り返しの読み取りを避けるために文字列の長さを事前に記録します
int firstLength=first.length();
int 秒の長さ=秒.長さ();
//空の文字列を含む特殊なケースを処理する
if("".equals(first) || "".equals(first)){
//誰が背が高くて誰が小さいですか?
結果 = 秒の長さ-最初の長さ;
}それ以外{
//ASCII コードの合計を保存するために使用される一時領域
int firstCount = 0;
int 秒カウント = 0;
// 純粋な演算を使用して 2 つの数値のうち小さい方を見つけます。実際には bt です。
int minLength = (2番目の長さ*(最初の長さ/二番目の長さ) + 最初の長さ*(二番目の長さ/最初の長さ))/(最初の長さ/二番目の長さ + 二番目の長さ/最初の長さ);
// 範囲外を防ぐために、2 つの文字列の短い方の桁数に従ってビットごとにインターセプトします。
for(int i=0;i<minLength;i++){
//ASCIIコードの合計を求める
firstCount+=first.substring(i,i+1).getBytes()[0];
SecondCount+=second.substring(i,i+1).getBytes()[0];
// 合計が等しくないため、サイズが比較されたことを示します
if(firstCount!=secondCount){
壊す;
}
}
if(firstCount==secondCount){
//長さが長すぎます
結果 = 最初の長さ-秒の長さ;
}それ以外{
//合計はできるだけ大きくする
結果 = firstCount - SecondCount;
}
}
}catch (例外 e) {}
結果を返します。
}