Въпрос относно условието на Problem 9. Simple Text Editor от C# advanced
Здравейте. Може ли някой до ми изясни условието на тази задача? Чета я, но дори не разбирам примерния imput и output - какво става с това abc и т.н.
Здравейте. Може ли някой до ми изясни условието на тази задача? Чета я, но дори не разбирам примерния imput и output - какво става с това abc и т.н.
Здравей. Имаш 4 команди според които извършваш действие. Аз я реших с един стек и една string променлива, като на 1 вмъквам в стек-а и присвоявам стойност на стринга, на 2 вмъквам в стека и присвоявам на стринга променливата на дадения индекс, на 3 принтирам знак от стринга, а на 4 вадя от стека. Ако все още ти е объркано за задачата, пиши да ти пратя линк с моето решение да го разгледаш.
The idea behind “Simple Text Editor” is to practise StringBuilder and Stack-collections skills. Commands 1-3 edit/print the content of your StringBuilder, while command 4 uses the Stack to return the StringBuilder to a previous state.
Code:
using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;
namespace simpleTextEditor
{
class Program
{
static void Main(string[] args)
{
StringBuilder sb = new StringBuilder();
Stack<string> textEditor = new Stack<string>();
int n = int.Parse(Console.ReadLine());
if (n < 1 && n > 105)
{
n = 0;
}
for (int i = 0; i < n; i++)
{
string[] cmdSplit = Console.ReadLine()
.Split(" ", StringSplitOptions.RemoveEmptyEntries);
if (int.Parse(cmdSplit[0]) == 1))
{
textEditor.Push(sb.ToString());
sb.Append(cmdSplit[1]);
}
else if (int.Parse(cmdSplit[0]) == 2)
{
int count = int.Parse(cmdSplit[1]);
if (count > 0 && count <= sb.Length)
{
textEditor.Push(sb.ToString());
sb.Remove(sb.Length - count, count);
//or sb = text.Substring(0, text.Length - index)
//example: someText, index = 4: someText - Text
}
}
else if (int.Parse(cmdSplit[0]) == 3)
{
int index = int.Parse(cmdSplit[1]);
if (index >= 0 && index <= sb.Length)
{
Console.WriteLine(sb[index - 1]);
}
}
else if (int.Parse(cmdSplit[0]) == 4)
{
if (textEditor.Any())
{
sb.Clear();
sb.Append(textEditor.Pop());
}
}
}
}
}
}