C# программа для подсчета количества строк с одинаковыми первым и последним символами в списке - PullRequest
0 голосов
/ 27 января 2020

Мне нужно написать программу для подсчета количества строк, где длина строки равна 2 или более, а первый и последний символы такие же, как в определенном списке со строками ["people", "desk", "orange" , "желтый", "морковь", "ананас"]

пример: ввод: "pe", result- 2 - то же самое, что и "people" и "ананас"

Пока я сделал это, он ищет, если первый и последний символы совпадают:

        List<string> stringsList = new List<string> { "people", "desk", "orange", "yellow", "carrot", "pineapple"};

        int count = 0;

        foreach (var c in stringsList)
        {
            if (c.Length > 1 && c[0] == c[-1])
            {
                count += 1;
            }
        }
        Console.WriteLine(count);

Ответы [ 5 ]

0 голосов
/ 27 января 2020

Спасибо, вот что я сделал:

        foreach (var c in stringsList)
        {
            if (c.Length > 1 && c[0] == input[0] && c[c.Length-1] == input[1])
            {
                count += 1;
            }
        }
0 голосов
/ 27 января 2020

Если вы используете C # 8 и. Net Core 3, вы можете использовать новый оператор «index from end», чтобы получить последний символ строки, чтобы несколько упростить код.

Например, последний символ строки str задается как str[^1].

Таким образом, вы можете использовать оператор Linq Count() для подсчета всех строк длины> = 2, где первый и последние символы соответствуют цели; например:

using System;
using System.Collections.Generic;
using System.Linq;

namespace CoreConsole
{
    public static class Program
    {
        static void Main()
        {
            List<string> stringsList = new List<string> { "people", "desk", "orange", "yellow", "carrot", "pineapple" };

            string search = "pe";

            int n = stringsList.Count(str => 
                str.Length >= 2
                && str[ 0] == search[0] 
                && str[^1] == search[1]);

            Console.WriteLine(n);
        }
    }
}
0 голосов
/ 27 января 2020

Попробуйте ответ ниже:

   //I'll let you input however you want to. Probably use console.ReadLine();
    string input = Console.ReadLine();
    int count;
    List<string> stringsList = new List<string> { "people", "desk", "orange", "yellow", "carrot", "pineapple"};

            foreach (string item in stringsList)
            {
                if (input.Length > 1 && item.Length > 1)
                {
                    if(input[input.Length - 1] == item[item.Length - 1])
                    {
                        //Same Last character
                        if(input[0] == item[0])
                        {
                            //Same first character
                            count += 1;
                        }
                    }
                }
            }
            Console.WriteLine(count);
0 голосов
/ 27 января 2020

Вы можете запросить с помощью Linq :

using System.Linq;

...

List<string> stringsList = new List<string> { 
  "people", "desk", "orange", "yellow", "carrot", "pineapple"
};

string input = "pe";

int count = stringsList
  .Count(word => word.Length >= 2 && 
                 word[0] == input[0] && 
                 word[word.Length - 1] == input[input.Length - 1]);

Или даже

int count = stringsList
  .Count(word => word.Length >= 2 && 
                 word.First() == input.First() && 
                 word.Last() == input.Last());
0 голосов
/ 27 января 2020

Вы можете использовать linq для этой цели. Так что вам нужно

  • отфильтровать по длине
  • сравнить первую букву с вводом
  • сравнить последнюю букву с вводом

Так код выглядит так:

List<string> stringsList = new List<string> { "people", "desk", "orange", 
    "yellow", "carrot", "pineapple" };

int count = 0;
var input = "pe";
count = stringsList.Where(s => s.Length > 2 
            &&  s[0] == input[0] 
            && s[s.Length - 1] == input[1])
            .Count();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...