Как рассчитать временную сложность программы C?

1 Ответы


  • #include <bits / stdc ++. h>
    using namespace std;
    #define MAX_CHARS 160

    // Эта функция возвращает истину, если str1 и str2 изморфны
    bool areIsomorphic (string str1, string str2)
    {

      int m = str1.length (), n = str2.length ();

      // Длина обеих строк должна быть одинаковой для
      соответствия // один к одному
      if (m! = N)
      return false;

      // Для отметки посещенных символов в str2
      bool Marked [MAX_CHARS] = {false};

      // Чтобы сохранить отображение каждого символа из str1 в
      // str2. Инициализировать все записи карты как -1.
      int map [MAX_CHARS];
      memset (карта, -1, sizeof (карта));

      // Обработка всех символов по очереди
      for (int i = 0; i <n; i ++)
      {
        // Если текущий символ str1
        // отображается в нем впервые.
        if (map [str1 [i]] == -1)
        {
          // Если текущий символ str2 уже
          // виден, однозначное сопоставление невозможно
          if (помечено [str2 [i]] == true)
            return false;

          // Пометить текущий символ str2 как посещенный
          отмеченный [str2 [i]] = true;

          // Сохраняем отображение текущих символов
          map [str1 [i]] = str2 [i];
        }

        // Если это не первое появление текущего
        // символа в str1, тогда проверяем, соответствует ли предыдущее
        // появление тому же символу str2
        else if (map [str1 [i]]! = Str2 [i])
          return false;
      }

      вернуть истину;
    }

    // Программа-драйвер
    int main ()
    {
    cout << areIsomorphic ("bbb", "yyy") << endl;
    cout << areIsomorphic ("aab", "yyz") << endl;
    возврат 0;
    }

Напишите свой ответ

Ваш ответ появится после модерации