Работа со строками

Упражнения с использованием строкового типа данных(string).

1. Реверс строки

Реверс – переворачивание символов строки, когда последняя буква в тексте становиться первой, а первая – последней.

Задание: Написать программу для получения реверсированной строки.

Решение
using System;

class Program
{
    static string Reverse(string str)
    {
        //переменная для хранения результата
        var retValue = string.Empty;
        foreach(var symbol in str)
        {
            //прицепляем символ в начало строки
            retValue = symbol + retValue;
        }

        return retValue;
    }

    static void Main(string[] args)
    {
        Console.Write("Введите строку для реверсирования: ");
        var s = Console.ReadLine();
        Console.WriteLine($"Реверс строки: {Reverse(s)}");
        Console.ReadLine();
    }
}

2. Капитализация текста

Капитализация текста – изменение первых букв в словах строки на заглавные. Например: “заголовок статьи” после преобразования – “Заголовок Статьи”.

Задание: Написать программу, программу, которая осуществляет капитализацию введенного пользователем текста. В качестве разделителя слов использовать пробел.

Подсказка

Для решения задачи капитализации строки, необходимо:

  • Прочитать текст введенный пользователем;
  • Разбить его на слова;
  • Для каждого слова получить первую букву и изменить её регистр;
  • Удалить из каждого слова первый символ;
  • Склеить полученное значение первого символа и остаток слова;
  • После обработки всех слов, конкатенировать их в одну строку.
Решение
using System;

class Program
{
    static string CapitalizeString(string s)
    {
        //разбиваем на слова
        var parts = s.Split(" ", StringSplitOptions.RemoveEmptyEntries);
        for (int i = 0; i < parts.Length; i++)
        {
            //получаем заглавную букву
            var firstLetter = parts[i].Substring(0, 1).ToUpper();
            //сцепляем с остатком от слова
            parts[i] = firstLetter + parts[i].Remove(0, 1);
        }

        //конкатенируем массив строк
        return string.Join(" ", parts);
    }

    static void Main(string[] args)
    {
        Console.Write("Введите строку для преобразования: ");
        var s = Console.ReadLine();

        var result = CapitalizeString(s);
        Console.WriteLine($"Результат: {result}");

        Console.ReadLine();
    }
}

3. Палиндром

Палиндром – слово или текст, который читается одинаково как слева направо, так и справа налево.

Задание: Проверить является введенный пользователем палиндромом или нет. Пробелы и регистр символов в строке игнорировать.

Подсказка

Алгоритм решения задачи с палиндромом:

  • Получить текст из клавиатуры;
  • Удалить из него все пробелы;
  • Перевести символы строки в один регистр(не имеет значение в какой, переводите в тот, с каким вам удобнее работать);
  • Последовательно сравнивать символы с начала и конца строки приближаясь к средине: первый с последним, второй со вторым от конца и т.д.
Решение
using System;

class Program
{
    static bool IsPalindrom(string text)
    {
        //удаляем пробелы
        var s = text.Replace(" ", string.Empty);
        //приводим в нижний регистр
        s = s.ToLower();
        //индекс последнего символа
        int lastIndex = s.Length - 1;
        for (int i = 0; i < s.Length / 2; i++)
        {
            //если символы не одинаковые, возвращаем false
            if (s[i] != s[lastIndex - i])
            {
                return false;
            }
        }

        return true;
    }

    static void Main(string[] args)
    {
        Console.Write("Введите строку для проверки: ");
        var text = Console.ReadLine();
        var res = IsPalindrom(text) ? string.Empty : "не ";
        Console.WriteLine($"Строка \"{text}\" {res}является палиндромом");
        Console.ReadLine();
    }
}

Также проверку можно реализовать путем сравнения строки с ее реверсом(метод описан выше):

static bool IsPalindrom(string text)
{
    //удаляем пробелы
    var s = text.Replace(" ", string.Empty);
    //приводим в верхний регистр
    s = s.ToUpper();
    //сравниваем строку с ее перевертышем
    return s == Reverse(s);       
}

Смотрите также: