C# 文字列を1文字ずつ分解して切り分ける方法3パターン AtCoder Beginner Contest 081 A – Placing Marbles

AtCoderの問題を解いていたところ、文字列を1文字ずつ分解するのに困りました。。。
自信がなかったのでググったのですが、これといった回答がなかったので記事にします。

思いついた方法は3通りです。
以下のコードでは、文字列を1文字ずつ分解した後に数字の1がいくつ含まれているかを計算しています。

パターン1

ToCharArray()を使います。
操作がちょっと多いかなという気がします。

using System;
using System.Linq;

namespace PracticeAtCoder
{
    class Program
    {
        static void Main(string[] args)
        {
            var inputIntArray = Console.ReadLine();
            var inputIntArray2 = inputIntArray.ToCharArray().Select(a=>int.Parse(a.ToString()));
            Console.WriteLine(inputIntArray2.Count(a => a == 1));
        }
    }
}

パターン2

foreachを使ってcharに分解します。

using System;

namespace PracticeAtCoder
{
    class Program
    {
        static void Main(string[] args)
        {
            var inputIntArray = Console.ReadLine();
            var counter = 0;
            foreach(var a in inputIntArray)
            {
                if (a == '1') counter++;
            }
            Console.WriteLine(counter);
        }
    }
}

パターン3

Substring()を使ってstringを切り出します。

using System;

namespace PracticeAtCoder
{
    class Program
    {
        static void Main(string[] args)
        {
            var inputIntArray = Console.ReadLine();
            var counter = 0;
            for (var i = 0; i < inputIntArray.Length; i++)
            {
                if (inputIntArray.Substring(i,1).Equals("1")) counter++;
            }
            Console.WriteLine(counter);
        }
    }
}

まとめ

私は行数が少なく書けるLinqが好きなのでパターン1で書きがちですが、コードの可読性だとパターン2か3ですかね。

その他のやり方があればツイッターまで連絡いただけると幸いです。

コメント

タイトルとURLをコピーしました