arrows blog

解いた問題などを適当に書いていきます。

AOJ 0006 Reverse Sequence

問題概要

文字列strが与えられるので、その文字列を逆順に表示せよ。

制約

  • 1 ≤ 文字列のサイズ ≤ 20
  • 文字列中の文字は、半角英数字のみ

解法

まず、文字列を入力する。
文字列の入力について、C言語C++では以下のように書く。

/*
注意点として、文字列の最大サイズより1大きいサイズにすること。
理由は、文字列の終端には、ヌル文字という文字列の終わりを表す特殊な文字が挿入されるためである。
*/
char str[21]; 
scanf("%s", str);
string str;
cin >> str;


文字列を入力したら、文字列のサイズを求める。
文字列のサイズの求め方は、C言語C++では以下のように書く。

strlen(str);
str.size(); // str.length()でもOK


後は、文字列のサイズ-1から0になるまでループで1文字ずつ出力していく。

コード

#include <iostream>

using namespace std;

int main()
{
    string str;

    cin >> str;
    for (int i = str.size()-1; i >= 0; i--) {
	cout << str[i];
    }
    cout << endl;
    return 0;
}