SRM 583 Div2 Easy SwappingDigits

問題

数字が文字列として与えられて,任意の位置iとjの文字を入れ替えることが出来る.一回だけ入れ替えてできる最小の数字を求めよ.但し0は先頭に来てはいけない

解答

最小値を一番左に,最小値が複数ある場合は,0だった場合は,一番左も最小値だった場合は...といろいろ悩んでしまいEasyにしてはかなりの時間を費やしてしまった.
選択するi, jは文字列の長さの2上個あるので,単純に全てのi, jで入れ替え一番最小のものを返せば良い.シンプル!

class SwappingDigits
{
public:
  string minNumber(string num)
    {
      int n = num.size();
      int i, j;
      string res = num;
      for(i = 0; i < n; i++){
        for(j = i+1; j < n; j++){
          string tmp = num;
          swap(tmp[i], tmp[j]);
          if (tmp[0] != '0' && tmp < res){
            res = tmp;
          }
        }
      }
      return res;

    }
};