このページについて
このページは、paiza ラーニング内に開設されているコンテンツ「レベルアップ問題集」で取り扱われているプログラミング課題について、独自の見解を述べたものです。
見解については、paizaラーニングの規約に基づき、許可されている範囲でのみ公開していますが、その内容については paiza とは一切関係なく、また paiza の立場を反映したものではありませんのでご注意ください。
挑戦する課題
レベルアップ問題集の文字列処理メニューから「文字列の検索 (paizaランク D 相当)」を取り上げます。
以下は、問題公開 Web ページからの引用です。
問題
文字列 S , T が与えられるので、 T が S の部分文字列かどうかを判定してください。
なお、 S の部分文字列とは、 S の連続した 1 文字以上を取り出してできる文字列のことです。
入力される値
1 2 |
S T |
- 1 行目に文字列 S , 2 行目に文字列 T が与えられます。
期待する出力
T が S の部分文字列ならば "YES" , そうでなければ "NO" を出力してください。考え方
ある文字列 S に別の文字列 T が含まれるか否かは、 contains() というメソッドを使えば良い。
気をつけなければならないのは、標準の Swift Compiler は contains() の引数が String.Element である点。 Foundaton をインポートしないとコンパイルエラーになる(これでハマった)。
解答例
1 2 3 4 5 6 7 8 9 10 |
import Foundation // 複数行を配列に読み込む let sa = Array(AnyIterator { readLine() }).map{ String($0) } // 問題文と変数名を対応づける(実質的な影響はない) let s = sa[0] let t = sa[1] print(s.contains(t) ? "YES" : "NO") |