<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=4169_-_Switch_Letters</id>
	<title>4169 - Switch Letters - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=4169_-_Switch_Letters"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4169_-_Switch_Letters&amp;action=history"/>
	<updated>2026-05-01T12:09:39Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=4169_-_Switch_Letters&amp;diff=9991&amp;oldid=prev</id>
		<title>AjM: Pagină nouă: == Enunt == Se dă un șir s = s0, s1,…, sn-1 de n litere mici. Prin s[i..j] se înțelege secvența si, si+1, …, sj. Asupra șirului se efectuează de mai multe ori operația switch(i,j,c1,c2), care în secvența s[i..j] modifică orice apariție a literei c1 în litera c2. De exemplu, dacă s=abcdaabcdaaab, atunci switch(0,5,&#039;a&#039;,&#039;z&#039;) face ca șirul să devină s=zbcdzzbcdaaab. == Cerinţa == Dându-se șirul s și m operații switch, să se afișeze șirul s după efect...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4169_-_Switch_Letters&amp;diff=9991&amp;oldid=prev"/>
		<updated>2024-06-03T16:19:35Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: == Enunt == Se dă un șir s = s0, s1,…, sn-1 de n litere mici. Prin s[i..j] se înțelege secvența si, si+1, …, sj. Asupra șirului se efectuează de mai multe ori operația switch(i,j,c1,c2), care în secvența s[i..j] modifică orice apariție a literei c1 în litera c2. De exemplu, dacă s=abcdaabcdaaab, atunci switch(0,5,&amp;#039;a&amp;#039;,&amp;#039;z&amp;#039;) face ca șirul să devină s=zbcdzzbcdaaab. == Cerinţa == Dându-se șirul s și m operații switch, să se afișeze șirul s după efect...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Enunt ==&lt;br /&gt;
Se dă un șir s = s0, s1,…, sn-1 de n litere mici. Prin s[i..j] se înțelege secvența si, si+1, …, sj. Asupra șirului se efectuează de mai multe ori operația switch(i,j,c1,c2), care în secvența s[i..j] modifică orice apariție a literei c1 în litera c2. De exemplu, dacă s=abcdaabcdaaab, atunci switch(0,5,&amp;#039;a&amp;#039;,&amp;#039;z&amp;#039;) face ca șirul să devină s=zbcdzzbcdaaab.&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Dându-se șirul s și m operații switch, să se afișeze șirul s după efectuarea celor m operații.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare switchletters.in conține pe prima linie șirul s, pe a doua linie numărul natural m, iar pe următoarele m linii se află câte două numere naturale și două litere mici ale alfabetului englez, separate prin câte un spațiu i j c1 c2, reprezentând operația switch(i,j,c1,c2).&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire switchletters.out va conține șirul s după efectuarea celor m operații.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* Șirul s conține cel mult 1.000.000 litere mici: 1 ≤ n ≤ 1.000.000.&lt;br /&gt;
* Șirul s nu conține alte caractere în afară de litere mici.&lt;br /&gt;
* Într-o operație switch(i,j,c1,c2), întotdeauna 0 ≤ i ≤ j &amp;lt; n, iar c1 ≠ c2.&lt;br /&gt;
* 1 ≤ m ≤ 217.&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; switchletters.in&lt;br /&gt;
 aaaabbbbcccc&lt;br /&gt;
 3&lt;br /&gt;
 0 2 a y&lt;br /&gt;
 5 9 b c&lt;br /&gt;
 1 3 a z&lt;br /&gt;
; switchletters.out&lt;br /&gt;
 yyyzbccccccc&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Pentru primul exemplu, După operația switch(0,2,’a’,’y’), s=yyyabbbbcccc.&lt;br /&gt;
După operația switch(5,9,’b’,’c’), s=yyyabccccccc.&lt;br /&gt;
După operația switch(1,3,’a’,’z’), s=yyyzbccccccc&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; switchletters.in&lt;br /&gt;
 anaaremere&lt;br /&gt;
 2&lt;br /&gt;
 3 6 z y&lt;br /&gt;
 2 7 o x&lt;br /&gt;
; switchletters.out&lt;br /&gt;
 anaaremere&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicație ==&lt;br /&gt;
s rămâne neschimbat, deoarece literele z și o nu apar în șir.&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def switch_letters(s, operations):&lt;br /&gt;
    for op in operations:&lt;br /&gt;
        i, j, c1, c2 = op&lt;br /&gt;
        for k in range(i, j+1):&lt;br /&gt;
            if s[k] == c1:&lt;br /&gt;
                s[k] = c2&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    # Citirea datelor de intrare&lt;br /&gt;
    s = list(input().strip())&lt;br /&gt;
    m = int(input().strip())&lt;br /&gt;
    operations = [list(input().split()) for _ in range(m)]&lt;br /&gt;
&lt;br /&gt;
    # Conversia indicele și literelor la valorile numerice corespunzătoare&lt;br /&gt;
    for i in range(m):&lt;br /&gt;
        operations[i][0] = int(operations[i][0])&lt;br /&gt;
        operations[i][1] = int(operations[i][1])&lt;br /&gt;
&lt;br /&gt;
    # Aplicarea operațiilor switch&lt;br /&gt;
    switch_letters(s, operations)&lt;br /&gt;
&lt;br /&gt;
    # Afisarea rezultatului&lt;br /&gt;
    print(&amp;quot;&amp;quot;.join(s))&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>AjM</name></author>
	</entry>
</feed>