06. Replace Repeating Chars - Text Processing Exercises
Здравейте, имам следният въпрос за тази задача https://judge.softuni.bg/Contests/Practice/Index/1217#5
ето условието :
Write a program that reads a string from the console and replaces any sequence of the same letters with a single corresponding letter.
Examples
Input |
Output |
aaaaabbbbbcdddeeeedssaa |
abcdedsa |
qqqwerqwecccwd |
qwerqwecwd |
Въпросът ми е защо не работи правилно кода когато използвам str.Remove(str[i]);, а работи правилно когато използвам str.RemoveAt(i);
Каква е разликата ?
ето и кода:
using System;
using System.Linq;
namespace ConsoleApp4
{
class Program
{
static void Main(string[] args)
{
var str = Console.ReadLine().ToList();
for (int i = 0; i < str.Count - 1; i++)
{
char curr = str[i];
char next = str[i +1];
if (curr == next)
{
str.RemoveAt(i);
//str.Remove(str[i]); така не работи правилно ,защо ?
i--;
}
}
Console.WriteLine(string.Join("", str));
}
}
}
Здравейте @NKKalev,
макар и да Ви пиша с малко закъснение, предоставям Ви прост алгоритъм за решението на задачата, като смятам, че ще е валиден и на Python: https://pastebin.com/SbjR37wN
Минавам през всички символи с for цикъл от 0 до text.Length-1 и ако символите са еднакви програмата продължава, но ако са различни запазвам само предходния символ. Накрая винаги си запазвам последния символ от текста. Не зная за Python, но в C# има клас StringBuilder(), който играе ролята на буфер при конкатенация на символи или стрингове, и точно него използвам за да държа резултата.
Дано да съм Ви помогнала!
Поздрави!
hank you so much for this. I was into this issue VidMate and tired to tinker around to check if its possible but couldnt get it done. Now that i have seen the way you did it, thanks guys
with
regards