Jianzhiオファーの第32問(C#)

Jianzhiオファーの第32問(C#)

正の整数の配列を入力し、配列内のすべての数値を 1 つの数値に連結し、連結できるすべての数値の中で最も小さい数値を出力します。たとえば、配列 {3, 32, 321} を入力すると、これら 3 つの数値で並べられる最小の数値は 321323 であることが出力されます。

まず、変換によってリスト内のデータをすべて文字列型に変換し、文字列のメソッドで機能を実現し、デリゲートでデリゲートします(デリゲートのメソッドについてはよく知りませんが、デリゲートの機能は大体知っています)これを使用することは self と似ています。関数を定義することは、Du Niang に尋ねる方法がわからない場合、すべての可能な比較から最適な項目を見つけるメソッドをカスタマイズすることと同じです) 重要なことは、これを理解できれば、問題ありません 判明したら、最終的に大きな文字列に連結して返します。

この質問の鍵は、各ステップに最適なスプライシング数を取得する方法です。コードは次のとおりです。

// An highlighted block
     public string PrintMinNumber (List<int> numbers) {
    
    
        // write code here       
        String[] res = new String[numbers.Count];
		for(int i=0;i<numbers.Count;i++)
		{
    
    
			res[i] = numbers[i].ToString();
		}
		Array.Sort(res,delegate(String m, String n) {
    
    //使用delegate委托来把每一步的最优拼接数求出;
			string mn = m+n;
			string nm = n+m;
			return mn.CompareTo(nm);});
		String result = "";
		for(int i=0;i<res.Length;i++)
		{
    
    
			result+=res[i];
		}
		return result;        
    }

おすすめ

転載: blog.csdn.net/weixin_50746193/article/details/116610322