Infiniti_Inter

Практика 17, номер 8

Oct 21st, 2019
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.58 KB | None | 0 0
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6.  
  7. namespace mainSolution
  8. {
  9.    
  10.  
  11.     class MyString
  12.     {
  13.  
  14.         private string line = "";//основное поле
  15.  
  16.         public int Length//свойство длинны
  17.         {
  18.             get { return line.Length; }
  19.         }
  20.  
  21.         public char this[int index]//индексатор
  22.         {
  23.             get { return line[index]; }
  24.         }
  25.         public MyString() { }//пустой конструктор
  26.         public MyString(string line) { this.line = string.Copy(line); }//конструктор для строкового литерала
  27.  
  28.         public int countOfDigit()//подсчет количества цифр в строке
  29.         {
  30.             int result = 0;
  31.             for (int i = 0; i < line.Length; ++i)
  32.                 if (char.IsDigit(line[i]))
  33.                     result++;
  34.             return result;
  35.         }
  36.         public void singleСharacters()//вывод всех симовлов, которые встречаются в строке только один раз
  37.         {
  38.             int[] сharacters = new int[3000];
  39.             for (int i = 0; i < line.Length; ++i)
  40.                 сharacters[line[i]]++;
  41.             for (int i = 0; i < сharacters.Length; ++i)
  42.                 if (сharacters[i] == 1)
  43.                     Console.Write("{0} ", (char)i);
  44.         }
  45.         public void longestSequence()//вывод самой длинной подстроки, состоящей из одних и тех же символов
  46.         {
  47.             string res = "";
  48.             int l = 0; int r = 0;
  49.             while (r < line.Length)
  50.             {
  51.                 while (r < line.Length && line[l] == line[r]) r++;
  52.                 if (r - l > res.Length)
  53.                     res = line.Substring(l, r - l);
  54.                 l = r;
  55.             }
  56.             Console.WriteLine(res);
  57.         }
  58.  
  59.         public static bool operator !(MyString a)//перегрузка оператора '!'
  60.         {
  61.             if (a.Length > 0)
  62.                 return true;
  63.             return false;
  64.         }
  65.         public static bool operator &(MyString a, MyString b)//перегрузка оператора '&'
  66.         {
  67.             if (a.Length != b.Length)
  68.                 return false;
  69.             for (int i = 0; i < a.Length; ++i)
  70.                 if (char.ToLower(a[i]) != char.ToLower(b[i]))
  71.                     return false;
  72.             return true;
  73.         }
  74.  
  75.  
  76.         public static bool operator true(MyString a)//перегрузка констант true и false
  77.         {
  78.             for (int i = 0; i < a.Length / 2; ++i)
  79.                 if (a[i] != a[a.Length - i - 1])
  80.                     return false;
  81.             return true;
  82.         }
  83.         public static bool operator false(MyString a)
  84.         {
  85.             for (int i = 0; i < a.Length / 2; ++i)
  86.                 if (a[i] != a[a.Length - i - 1])
  87.                     return false;
  88.             return true;
  89.         }
  90.  
  91.         public static implicit operator MyString(string s)//явное приведение к MyString
  92.         {
  93.             return new MyString(s);
  94.         }
  95.         public static implicit operator string(MyString s)//явное приведение к string
  96.         {
  97.             return string.Copy(s.line);
  98.         }
  99.  
  100.     }
  101.  
  102.     static class Program
  103.     {
  104.  
  105.         static void Main(string[] args)
  106.         {
  107.             MyString a = new MyString("abacaba");
  108.             a.singleСharacters();
  109.         }
  110.  
  111.     }
  112. }
Add Comment
Please, Sign In to add comment