מרץ.27

מפענח מחרוזת

מפענח מחרוזת

כלל הקידוד הוא: k[encoded_string] לדוגמא: s = "3[a2[c]]", return "accaccacc";

  1. public string DecodeString(string s) {
  2. string result = String.Empty;
  3. Stack<string> strStack = new Stack<string>();
  4. Stack<int> countStack = new Stack<int>();
  5. int i = 0;
  6. while(i < s.Length){
  7. if(char.IsDigit(s[i])) {
  8. int number = s[i++] - '0';
  9. while(char.IsDigit(s[i])) {
  10. number = 10 * number + s[i++] - '0';
  11. }
  12. countStack.Push(number);
  13. }
  14. else if(s[i] == '[') {
  15. strStack.Push(result);
  16. result = String.Empty;
  17. i++;
  18. }
  19. else if(s[i] == ']') {
  20. StringBuilder sb = new StringBuilder();
  21. int numOfTimes = countStack.Pop();
  22. for(int y=0; y<numOfTimes;y++) {
  23. sb.Append(result);
  24. }
  25. result = strStack.Pop() + sb.ToString();
  26. i++;
  27. }
  28. else {
  29. result+=s[i++];
  30. }
  31. }
  32. return result;
  33. }


תגיות:
שתף את הסיפור הזה:

תגובות(0)

השאירו תגובה

קפטצ'ה לא מתאימה

תגובה