Задача. В заданной строке заменить каждую точку или точку с запятой тремя точками подряд.
Ввод | Вывод |
asgahra.agargarhah;rehaehraeh.arhreh agerge..sgsgg.g | asgahra…agargarhah…rehaehraeh…arhreh agerge……sgsgg…g |
;;.grg . . ; ; | ………grg … … … … |
Код программы (C++):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#include <iostream> #include <string> using namespace std; int main() { ios::sync_with_stdio(false); string s, t; getline(cin, s); for (int i=0; i<s.length(); i++) { if (s[i]=='.'||s[i]==';') { t+="..."; } else { t+=s[i]; } } cout << t << endl; return 0; } |
Java:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import java.util.*; import java.lang.*; import java.io.*; class Ideone { public static void main (String[] args) { Scanner in = new Scanner (System.in); String s, t=""; s = in.nextLine(); for (int i=0; i<s.length(); i++) { if (s.charAt(i)=='.'||s.charAt(i)==';') { t+="..."; } else t+=s.charAt(i); } System.out.println(t); } } |
Алгоритм решения: пройдём по всем символам строки от её начала и до конца, в случае, если встреченный символ — ‘.’ или ‘;’, мы добавим в строку вывода ‘…’, иначе — текущий символ.
Думаю, автор хотел, чтобы строку таки построили. Кстати, вывести ее один раз — быстрее, чем посимвольно. Не веришь — спроси у Феди 🙂
Верю)
Исправлено.
Зачтено
Java решение-то работает, то оно не является оптимальным. Сегодня на лабораторной рассмотрим почему. В таких случаях лучше использовать класс StringBuilder.