このページについて

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

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

挑戦する課題

レベルアップ問題集データセット選択メニューから「英小文字の出現率 (paizaランク C 相当)」を取り上げます。

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

問題

長さ Nの文字列 S が与えられます。 S に含まれている各文字の出現回数をそれぞれ求め、「 a」の出現回数、「 b」の出現回数、…、「 z」の出現回数を順に半角スペース区切りで出力してください。

期待する出力

a」の出現回数、「 b」の出現回数、…、「 z」の出現回数をそれぞれ出力してください。

条件

すべてのテストケースにおいて、以下の条件をみたします。

  • N1 以上 100 以下
  • S の各文字は英小文字

考え方

執筆中

Swfit の場合、C 言語のような単純な操作で文字コードを得ることはできません。
C 言語であれば、文字コードを得たい文字をシングルクオートで囲むだけで文字コードを得られましたが、Swift  には同様な操作はありません。

一方、Swift には Unicode.Scalar 型があり、そのプロパティの valueを使うことにより文字コードを得ることが可能となります。

Swift の場合には型が厳密なため何度か型変換を行う必要がありますが、ある文字の文字コードは

という形で得ることが可能となりましす(今回の場合には、 Unicode.Scalar のイニシャライザは成功するという仮定のもと、強制アンラップを行っています)。

もし、この結果を配列のインデックス(要素数)として利用するのであれば、再度 Int に変換する必要がありますので注意してください。

解答例

リファレンス

  • value
    A numeric representation of the Unicode scalar.