830文字列のソート

830文字列のソート

問題の解決策

int alpha[256] = {0};//记录字符的次数 
bool cmp(char a,char b)
{
    if(alpha[a]==alpha[b])//如果次数相同 
    {
        return a<b;
    }
    return alpha[a]>alpha[b];
}

class Solution {
public:
    /**
     * @param str: the string that needs to be sorted
     * @return: sorted string
     */
    
    string stringSort(string &str) {
        // Write your code here
        memset(alpha,0,sizeof(alpha)*sizeof(int));
        //统计各字符出现次数 
        for(int i=0;i<str.length();i++)
        {
            alpha[str[i]]++;
        }
        
        sort(str.begin(),str.end(),cmp);
        return str;
    }
};

経験の問題

Input
"lintcode"

Output
"oelcdint"

Expected
"cdeilnot"

これは、手動で初期化されたクラスのソリューション外部変数でOJ書き込みを示すアルファの配列を初期化しませんでしたmemsetの文の不足、です。

概要

  • 標準ライブラリのソート機能を使用して非常に便利ですが、それは、いくつかの効率が低下します。とき仕上がりデータは151ms。
  • 理解CMP(P1、P2)、内側の上面CMP機能が戻るトップ表面上の真のP1、P2の偽

おすすめ

転載: www.cnblogs.com/virgildevil/p/12155675.html