このページについて

このページは、paiza ラーニング内に開設されているコンテンツ「レベルアップ問題集」で取り扱われているプログラミング課題について、独自の見解を述べたものです。

見解については、paizaラーニングの規約に基づき、許可されている範囲でのみ公開していますが、その内容については paiza とは一切関係なく、また paiza の立場を反映したものではありませんのでご注意ください。

挑戦する課題

レベルアップ問題集文字列処理メニューから「i 文字目の出力 (paizaランク D 相当)」を取り上げます。

以下は、問題公開 Web ページからの引用です。

問題

文字列 S と整数 i が与えられるので、 S の i 文字目を出力してください。

考え方

Swiftだと、C言語とは違い、 str[3] のようにして文字列中の任意の文字を得ることはできない。

String型の添字(Subscript)は String.Index 型なので、 Int 型をそのまま指定することはできない。
従って、 index(_:offsetBy:) を使って目的とする場所の添字を String.Index 型で取得しなければならない。

もう一つの方法は、入力された文字列を分解し、「文字の配列」とする方法。もしかしたらこっちの方が汎用性があるかもしれない。

解答例

この問題の場合、表示させたい文字の位置は、文字列の先頭を 1 として定義しているため、 String.Index の値は -1 しなければならない点に注意。

 

入力文字列を文字の配列にするのであれば、このような感じ。

 

index(_:offsetBy) を使わずに for 文でやろうとすると、たとえばこんな感じ。

リファレンス