Упражнения с использованием строкового типа данных(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);
}