2582 - Secv Elim: Difference between revisions

From Bitnami MediaWiki
Andrada378 (talk | contribs)
Pagină nouă: Cerinta 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...
 
Andrada378 (talk | contribs)
 
(4 intermediate revisions by the same user not shown)
Line 1: Line 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.
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.


Programul va afișa pe ecran șirul obținut.
== Restricții și precizări ==


Rezolvare
* șirul dat conține maximum 255 de caractere
* nu se face diferență între literele mari și mici.


def elimina_duplicate_alaturate(s):
== Exemplu ==


    rezultat = []
'''Intrare'''


    for char in s:
aAcboOoBcAXa


        if not rezultat or char != rezultat[-1]:
'''Ieșire'''


            rezultat.append(char)
AXa


        else:
== 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


            rezultat.pop()
    i = 0


    return <nowiki>''</nowiki>.join(rezultat)
    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: ")
    input_string = input("Introduceti sirul de caractere: ")
    result = elimina_duplicate_consecutive(input_str)
 
    if result is not None:
    result = elimina_duplicate_alaturate(input_string)
        print(result)
 
</syntaxhighlight>
    print("Sirul obtinut dupa eliminarea duplicatelor consecutive este:", result)

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>