2582 - Secv Elim: Difference between revisions
Andrada378 (talk | contribs) No edit summary |
Andrada378 (talk | contribs) |
||
(3 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
== Cerința == | |||
Se dă un șir de caractere care conține doar litere mici și mari ale alfabetului englez. Se parcurge șirul de la stânga la dreapta și dacă se întâlnește o secvență de litere alăturate egale, se șterge. Dacă în urma acestei operații se obține o nouă secvență de litere egale, se șterge și ea, ș. a. m. d. | Se dă un șir de caractere care conține doar litere mici și mari ale alfabetului englez. Se parcurge șirul de la stânga la dreapta și dacă se întâlnește o secvență de litere alăturate egale, se șterge. Dacă în urma acestei operații se obține o nouă secvență de litere egale, se șterge și ea, ș. a. m. d. | ||
Să se afișeze șirul obținut. | Să se afișeze șirul obținut. | ||
Date de intrare | == Date de intrare == | ||
Programul citește de la tastatură un șir de caractere. | Programul citește de la tastatură un șir de caractere. | ||
Date de iesire | == Date de iesire == | ||
Programul va afișa pe ecran șirul obținut. | |||
== Restricții și precizări == | |||
* șirul dat conține maximum 255 de caractere | |||
* nu se face diferență între literele mari și mici. | |||
== Exemplu == | |||
'''Intrare''' | |||
aAcboOoBcAXa | |||
'''Ieșire''' | |||
AXa | |||
== Rezolvare == | |||
<syntaxhighlight lang="python"> | |||
def elimina_duplicate_consecutive(s): | |||
if len(s) > 255: | |||
print("Eroare: Lungimea șirului depășește 255 de caractere.") | |||
return None | |||
i = 0 | |||
while i < len(s) - 1: | |||
if s[i].lower() == s[i + 1].lower(): | |||
c = s[i].lower() | |||
j = i + 1 | |||
while j < len(s) and s[j].lower() == c: | |||
j += 1 | |||
s = s[:i] + s[j:] | |||
i = -1 | |||
i += 1 | |||
return s | |||
if __name__ == "__main__": | if __name__ == "__main__": | ||
input_str = input("Introduceți șirul: ") | |||
result = elimina_duplicate_consecutive(input_str) | |||
if result is not None: | |||
print(result) | |||
</syntaxhighlight> | |||
Latest revision as of 16:53, 4 January 2024
Cerința[edit | edit source]
Se dă un șir de caractere care conține doar litere mici și mari ale alfabetului englez. Se parcurge șirul de la stânga la dreapta și dacă se întâlnește o secvență de litere alăturate egale, se șterge. Dacă în urma acestei operații se obține o nouă secvență de litere egale, se șterge și ea, ș. a. m. d.
Să se afișeze șirul obținut.
Date de intrare[edit | edit source]
Programul citește de la tastatură un șir de caractere.
Date de iesire[edit | edit source]
Programul va afișa pe ecran șirul obținut.
Restricții și precizări[edit | edit source]
- șirul dat conține maximum 255 de caractere
- nu se face diferență între literele mari și mici.
Exemplu[edit | edit source]
Intrare
aAcboOoBcAXa
Ieșire
AXa
Rezolvare[edit | edit source]
<syntaxhighlight lang="python"> def elimina_duplicate_consecutive(s):
if len(s) > 255: print("Eroare: Lungimea șirului depășește 255 de caractere.") return None
i = 0
while i < len(s) - 1: if s[i].lower() == s[i + 1].lower(): c = s[i].lower() j = i + 1 while j < len(s) and s[j].lower() == c: j += 1 s = s[:i] + s[j:] i = -1 i += 1
return s
if __name__ == "__main__":
input_str = input("Introduceți șirul: ") result = elimina_duplicate_consecutive(input_str) if result is not None: print(result)
</syntaxhighlight>