Краткий ответ: нужно разбить строку на слова, для каждого слова посчитать, сколько раз оно встречается, и вывести те слова, у которых счётчик равен 1.
Схема для варианта 25
flowchart TD
A([Начало]) --> B[/Ввод строки s/]
B --> C["words = s.split()"]
C --> D["n = len(words)"]
D --> E["i = 0"]
E --> F{"i < n?"}
F -- "нет" --> Z([Конец])
F -- "да" --> G["count = 0<br/>j = 0"]
G --> H{"j < n?"}
H -- "да" --> I{"words[i] == words[j]?"}
I -- "да" --> J["count = count + 1"]
I -- "нет" --> K["j = j + 1"]
J --> K
K --> H
H -- "нет" --> L{"count == 1?"}
L -- "да" --> M[/"Вывод words[i]"/]
L -- "нет" --> N["i = i + 1"]
M --> N
N --> F
Та же схема словами
- Начало.
- Ввод строки
s. words = s.split(),n = len(words),i = 0.- Если
i = n— конец. count = 0,j = 0.- Если
j = n— перейти к пункту 9. - Если
words[i] == words[j], тоcount = count + 1. j = j + 1; вернуться к пункту 6.- Если
count == 1, вывестиwords[i]. i = i + 1; вернуться к пункту 4.
Псевдокод
words = s.split()
for i in range(len(words)):
count = 0
for j in range(len(words)):
if words[i] == words[j]:
count += 1
if count == 1:
print(words[i])
Почему это работает: для очередного слова внутренний цикл считает все его вхождения. Если слово встречается ровно один раз, оно совпадёт только само с собой, и count будет равен 1. Если есть ещё такое же слово, count станет больше 1, и слово не выведется.
Пример:кот пёс кот лиса пёс сова
счётчики: кот — 2, пёс — 2, лиса — 1, сова — 1.
Результат: лиса, сова.
Считаем, что слова разделены пробельными символами; split() без аргумента убирает лишние пробелы. Если нужен учёт знаков препинания или регистра, это надо обработать отдельно.