AtCoder Regular Contest #003 B さかさま辞書

問題概要

問題文
複数の文字列が与えられる。
それぞれの文字列について反転したものを辞書順に並べたとき、
早い方にくるものから順に出力せよ。

解き方

文字列を引数とし反転して出力する関数を作る。
次に受け取った文字列を反転して動的配列に保存し、ソートする。
そしてソートした動的配列の文字列を順に反転しながら出力する。

ソースコード

#include <iostream>
#include <string>
#include <vector>

using namespace std;

string reversestr(string str){
    int n=(int)str.size();
    string rev="";
    for (int i=n-1; i>=0; i--) rev+=str[i];
    return rev;
}

int main (int argc, const char * argv[])
{
    vector<string>str;
    int n;
    cin>>n;
    for (int i=0; i<n; i++) {
        string dam;
        cin>>dam;
        str.push_back(reversestr(dam));
    }
    sort(str.begin(),str.end());
    for (int i=0; i<n; i++) {
        cout<<reversestr(str[i])<<endl;
    }
    return 0;
}