ぱーぽーの競プロ記

競技プログラミングに関することを書きます。

文字列に関するメモ的な何か。

文字列に関する自分の知識が曖昧だったので、少しまとめたいと思います。

○文字列ソートほげほげ
まずこのようなものを書いてみました。

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;

int main(){
   string s;
   cin >> s;

   cout << "そのまま出力 : " << s << endl;

   sort(s.begin(), s.end());
   cout << "昇順で出力 : " << s << endl;

   reverse(s.begin(), s.end());
   //sort(s.rbegin(), s.rend());
   cout << "降順で出力 : " << s << endl;

   return 0;
}

これを実行するとこんな感じ。

4327061560
そのまま出力 : 4327061560
昇順で出力 : 0012345667
降順で出力 : 7665432100

昇順のソートはいつもやってるので問題ないですが、降順でソートさせる場合は上のようにやればいいのですね。

 reverse(s.begin(), s.end());
 sort(s.rbegin(), s.rend());

どちらでもたぶん同じことだと思います。


○string → int
変換の仕方はいろいろあると思いますが、私はこんな感じで。

int number = 12345;
stringstream ss;
ss << number;
string s = ss.str();


○最後に
上で書いた方法よりもやりやすい方法・間違いの指摘などありましたら、そのときはコメントなどいただければ幸いです。
今年の国内予選のB問題も上で書いたような知識があればわりとあっさり解けてしまうと思います。