Advertisement
Guest User

Untitled

a guest
Aug 19th, 2019
248
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.68 KB | None | 0 0
  1. using System;
  2. using System.Text;
  3.  
  4. namespace Amazon.RunLength
  5. {
  6.     class Program
  7.     {
  8.         static void Main(string[] args)
  9.         {
  10.             var content = @"AAAABBCCDAA";
  11.             var result = Encode(content);
  12.             Console.WriteLine(@"{0}:{1}", content, result);
  13.  
  14.             var encrypted = @"4A2B2C1D2A10F";
  15.             var decrypted = Decode(encrypted);
  16.             Console.WriteLine(@"{0}:{1}", encrypted, decrypted);
  17.         }
  18.  
  19.         static string Encode(string content)
  20.         {
  21.             const string format = @"{0}{1}";
  22.             if (string.IsNullOrWhiteSpace(content))
  23.                 return string.Empty;
  24.  
  25.             var sb = new StringBuilder();
  26.             var current = 0;
  27.             var item = content[current];
  28.             var i = current+1;
  29.             for(; i < content.Length; i++) {
  30.                 if(content[i] == item)
  31.                     continue;
  32.  
  33.                 sb.AppendFormat(format, i - current, item);
  34.                 item = content[i];
  35.                 current = i;
  36.             }
  37.  
  38.             sb.AppendFormat(format, i - current, item);
  39.  
  40.             return sb.ToString();
  41.         }
  42.    
  43.         static string Decode(string content) {
  44.             var sb = new StringBuilder();
  45.             for(var i = 0; i < content.Length;){
  46.                 var current = 0;
  47.                 while(Char.IsDigit(content[i + current]))
  48.                     current += 1;
  49.                
  50.  
  51.                 var times = int.Parse(content.Substring(i, current));
  52.                 sb.Append(new String(content[i+current], times));
  53.  
  54.                 i += current + 1;
  55.             }
  56.  
  57.             return sb.ToString();
  58.         }
  59.     }
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement