Пн. Июн 1st, 2026

Обработка символьных данных

Основы работы со строками

Символьные строки — это последовательности символов, которые широко используются в программировании для хранения и обработки текстовой информации. В Python строки являются неизменяемыми объектами, но поддерживают множество операций для работы с ними.

Встроенные функции для работы со строками

1 Основные операции

  • len(s) — длина строки
  • s[i] — доступ к символу по индексу
  • s + t — конкатенация строк
  • s * n — повторение строки
  • s in t — проверка вхождения подстроки

2 Методы строк

  • s.lower(), s.upper() — регистр
  • s.strip() — удаление пробелов
  • s.split() — разделение на список
  • s.find(), s.rfind() — поиск
  • s.replace() — замена подстроки

3 Проверки

  • s.isdigit() — только цифры
  • s.isalpha() — только буквы
  • s.isalnum() — буквы и цифры
  • s.startswith() — начинается с
  • s.endswith() — заканчивается на

Алгоритмы обработки символьных строк

Подсчёт количества символов

Подсчет количества вхождений символа в строку:

def count_char(s, char):
    count = 0
    for c in s:
        if c == char:
            count += 1
    return count

# Или с использованием встроенных методов
def count_char_builtin(s, char):
    return s.count(char)
H
e
l
l
o

Подсчет символа ‘l’ в строке «Hello»: результат = 2

Разбиение строки на слова

Разделение строки на слова по пробельным символам:

def split_words(s):
    words = []
    current_word = ""
    for char in s:
        if char.isspace():
            if current_word:
                words.append(current_word)
                current_word = ""
        else:
            current_word += char
    if current_word:
        words.append(current_word)
    return words

# Или с использованием встроенных методов
def split_words_builtin(s):
    return s.split()
Hello
world
Python

Разбиение «Hello world Python» на слова

Поиск подстроки

Поиск позиции подстроки в строке:

def find_substring(s, substring):
    n = len(s)
    m = len(substring)
    for i in range(n - m + 1):
        if s[i:i+m] == substring:
            return i
    return -1

# Или с использованием встроенных методов
def find_substring_builtin(s, substring):
    return s.find(substring)
P
y
t
h
o
n

Поиск «tho» в «Python»: позиция = 2

Замена подстроки

Замена всех вхождений подстроки на другую строку:

def replace_substring(s, old, new):
    result = ""
    i = 0
    n = len(s)
    m = len(old)
    while i < n:
        if i <= n - m and s[i:i+m] == old:
            result += new
            i += m
        else:
            result += s[i]
            i += 1
    return result

# Или с использованием встроенных методов
def replace_substring_builtin(s, old, new):
    return s.replace(old, new)
I
like
Java
I
love
Python

Замена "like Java" на "love Python"

Генерация слов по заданным ограничениям

Генерация всех слов заданной длины в алфавите {a, b, c}, содержащих не более двух букв 'a':

def generate_words(length, alphabet, max_a, current="", result=None):
    if result is None:
        result = []
    
    if len(current) == length:
        if current.count('a') <= max_a:
            result.append(current)
        return result
    
    for char in alphabet:
        generate_words(length, alphabet, max_a, current + char, result)
    
    return result

# Пример использования
alphabet = ['a', 'b', 'c']
words = generate_words(3, alphabet, 2)
print(words)  # ['bbb', 'bbc', 'bcb', 'bcc', 'cbb', 'cbc', 'ccb', 'ccc', 'abb', 'abc', ...]
abc
acb
bac
bca
cab
cba

Некоторые слова длиной 3 из алфавита {a, b, c}

Преобразование чисел и строк

Число → Строка

def number_to_string(n):
    if n == 0:
        return "0"
    
    is_negative = n < 0
    if is_negative:
        n = -n
    
    result = ""
    while n > 0:
        digit = n % 10
        result = chr(ord('0') + digit) + result
        n //= 10
    
    return "-" + result if is_negative else result

# Или с использованием встроенных функций
def number_to_string_builtin(n):
    return str(n)
1
2
3

Число 123 → Строка "123"

Строка → Число

def string_to_number(s):
    if not s:
        return 0
    
    is_negative = False
    if s[0] == '-':
        is_negative = True
        s = s[1:]
    
    result = 0
    for char in s:
        if '0' <= char <= '9':
            result = result * 10 + (ord(char) - ord('0'))
        else:
            break  # нечисловой символ
    
    return -result if is_negative else result

# Или с использованием встроенных функций
def string_to_number_builtin(s):
    return int(s)
4
5
6

Строка "456" → Число 456

Важные моменты для запоминания

Операция Встроенная функция Сложность
Длина строки len(s) O(1)
Поиск подстроки s.find() O(n*m)
Замена подстроки s.replace() O(n)
Разделение на слова s.split() O(n)
Преобразование число→строка str(n) O(log n)
Преобразование строка→число int(s) O(n)

Заключение

Обработка символьных данных — важная тема в программировании и в ЕГЭ по информатике. Понимание основных алгоритмов работы со строками, а также знание встроенных функций языка программирования позволяют эффективно решать широкий круг задач.

При решении задач важно выбирать подходящий метод: использовать встроенные функции для простоты или реализовывать собственные алгоритмы для лучшего понимания процесса.