Почему не отображается последний символ моей RLE? - PullRequest
0 голосов
/ 29 октября 2018

Я новичок в C # и попытался написать собственный простой метод для кодирования длины строки в строке. Он работает хорошо, за исключением последней буквы, потому что последняя буква не будет отображаться. Что не так с моей логикой?

namespace RunLengthEncoding
{
    class Program
    {
        static void Main(string[] args)
        {
            string tobesorted;
            string encoded = "";
            int temp1, temp2;
            int same = 1;


            Console.WriteLine("Please enter the string you want to be sorted");
            tobesorted = Console.ReadLine();
            tobesorted = tobesorted.ToUpper();
            tobesorted = tobesorted.Replace(" ", string.Empty);
            char[] tbsarray = tobesorted.ToCharArray();
            for (int i =0; i < tbsarray.Length-1; i++)
            {

                temp1 = tbsarray[i];
                temp2 = tbsarray[i + 1];
                if (temp1==temp2)
                {
                    same++;
                }
                else
                {
                    encoded = encoded + tbsarray[i];
                    encoded = encoded + Convert.ToString(same);
                    same = 1;
                }
                if ((tbsarray.Length-2 == i))
                {
                    encoded = encoded + tbsarray[i] + Convert.ToString(same);
                    Console.WriteLine(encoded);
                }
            }
            Console.WriteLine(encoded);
            Console.ReadLine();

        }
    }
}

1 Ответ

0 голосов
/ 29 октября 2018
        string tobesorted;
        string encoded = "";
        int temp1
        int same = 1;

        Console.WriteLine("Please enter the string you want to be sorted");

        tobesorted = Console.ReadLine();
        tobesorted = tobesorted.ToUpper();
        tobesorted = tobesorted.Replace(" ", string.Empty);
        char[] tbsarray = tobesorted.ToCharArray();
        for (int i = 0; i < tbsarray.Length; i++)
        {
            temp1 = tbsarray[i];

            encoded = encoded + tbsarray[i];
            encoded = encoded + Convert.ToString(same);
            same = 1;

            if ((tbsarray.Length - 2 == i))
            {
                encoded = encoded + tbsarray[i] + Convert.ToString(same);
                Console.WriteLine(encoded);
            }
        }

        Console.WriteLine(encoded);
        Console.ReadLine();
...