ВУЗ:
Составители:
Рубрика:
48
Для каждого символа строки
НачалоЦикла
Если текущийСимвол – начало слова, то
НачалоЕсли
Объявить длину слова
Найти длину слова, которое начинается в текущем символе
Объявить переменную, в которой будет храниться текущее слово
Получить слово в виде строки.
Если слово необходимо выделить, то
НачалоЕсли
Удалить слово
Выделить слово
Вставить выделенное слово на позицию старого
Увеличить текущую позицию на длину выделенного слова
ОкончаниеЕсли
ОкончаниеЕсли
ОкончаниеЦикла
3.6. Обратите внимание на увеличение позиции после вставки слова.
Это принципиально важно. Для того, что бы это
продемонстрировать, рассмотрим предложение «я». Первая буква (с
индексом 0) является началом слова, которое надо выделить. После
выделения получится «[я]». При этом позиция текущего символа
была равна 0. После выделения мы переместимся на символ с
индексом 1. «я
» является словом, которое надо выделить, поэтому
после выделения получится «[[я]]». Как видно, без увеличения
текущей позиции в данном случае алгоритм «зациклится».
3.7. Оптимизации кода так же аналогичны оптимизациям в предыдущей
задаче. Приведем полный код решения:
using System;
namespace ConsoleApplication17 {
class Program {
public static bool needMarkWord(string word) {
if (word[0] == word[word.Length - 1]) {
return true;
} else {
return false;
}
}
private static bool isSeparator(char c) {
string oneCharStr = "" + c;
return " .,?!".Contains(oneCharStr);
}
public static bool isBeginOfWord(string str, int index) {
if (isSeparator(str[index])) {
return false;
Страницы
- « первая
- ‹ предыдущая
- …
- 46
- 47
- 48
- 49
- 50
- …
- следующая ›
- последняя »