2582 - Secv Elim: Diferență între versiuni

De la Universitas MediaWiki
Fără descriere a modificării
 
(Nu s-au afișat 2 versiuni intermediare efectuate de același utilizator)
Linia 1: Linia 1:
Cerinta
== 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.
 
== Date de iesire ==
Programul va afișa pe ecran șirul obținut.


Programul citește de la tastatură un șir de caractere.
== 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


Date de iesire
== 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


Programul va afișa pe ecran șirul obținut.
    i = 0


Rezolvare<syntaxhighlight lang="python">
    while i < len(s) - 1:
def elimina_duplicate_alaturate(s):
        if s[i].lower() == s[i + 1].lower():
    rezultat = []
            c = s[i].lower()
    for char in s:
            j = i + 1
        if not rezultat or char != rezultat[-1]:
            while j < len(s) and s[j].lower() == c:
            rezultat.append(char)
                j += 1
        else:
            s = s[:i] + s[j:]
            rezultat.pop()
            i = -1
    return ''.join(rezultat)
        i += 1


    return s
if __name__ == "__main__":
if __name__ == "__main__":
    input_string = input("Introduceti sirul de caractere: ")
    input_str = input("Introduceți șirul: ")
    rezultat = elimina_duplicate_alaturate(input_string)
    result = elimina_duplicate_consecutive(input_str)
    print("Sirul obtinut dupa eliminarea duplicatelor consecutive este:", rezultat)
    if result is not None:
 
        print(result)
</syntaxhighlight>
</syntaxhighlight>

Versiunea curentă din 4 ianuarie 2024 16:53

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.

Să se afișeze șirul obținut.

Date de intrare

Programul citește de la tastatură un șir de caractere.

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

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)