Гузоштани ҳадди аққал барои ташаккули палиндром бо ҷойивазкунии иҷозатдодашуда  


Сатҳи душворӣ миёна
Аксар вақт пурсида мешавад Amazon CodeNation Directi Google Ҳақиқатан Шабака
Барномарезии динамикӣ сатр

Масъалаи "Дохилсозии ҳадди аққал барои ташаккули палиндром бо ҷойивазкуниҳои иҷозатдодашуда" изҳор медорад, ки ба шумо сатр дода шудааст, ки ҳамаи ҳарфҳо бо ҳарфи хурд навишта шудаанд. Дар изҳороти масъала дархост карда мешавад, ки ҳадди аққал гузоштани аломат ба сатр, ки он метавонад Палиндром шавад. Мавқеи аломатҳоро дар сатр тағир додан мумкин аст.

мисол  

Гузоштани ҳадди аққал барои ташаккули палиндром бо ҷойивазкунии иҷозатдодашуда

malyalam
1

Шарҳ

Агар мо метавонем 'а' -ро ба сатри аввал илова кунем, мо палиндром сохта метавонем.

madaam
1

Шарҳ

Барои палиндромияи сатри аслӣ 'd' ё 'a' илова кунед.

Алгоритм  

  1. Дарозии сатрро ба l ва баромади 0.
  2. Эълом кунед ҳамаҷониба асал.
  3. Ҳисоби ҳар як аломатро дар сатр нигоҳ доред ва нигоҳ доред.
  4. Массивро аз 0 то i i 26 сар кунед.
    1. Агар тафтиш кунед countChar [i] % 2 == 1,
      1. Агар рост бошад, пас натиҷаи ++ -ро иҷро кунед.
  5. Агар натиҷа ба 0 баробар бошад, пас ба 0 баргардед.
  6. Натиҷаи бозгашти дигар-1.

Шарҳ

Ба шумо дода мешавад данд, вазифаи шумо дода шудааст, ки пайдо кардани ҳадди аққали гузоштани сатр, то он Палиндром шавад. Мавқеи аломатҳоро дар сатр тағир додан мумкин аст. Мо пайдоиши аломати сатрро ҳисоб карда, онро дар массив нигоҳ медорем. Азбаски идея дар паси он аст, ки вақте сатр палиндром бошад, танҳо як аломат вуҷуд дорад, ки ҳангоми тоқ будани дарозии он метавонад тоқ бошад. Ғайр аз ин, ҳамаи аломатҳо басомади ҳам доранд. Пас, мо бояд аломатҳоеро ёбем, ки шумораи тоқро ба вуҷуд оранд.

ҳамчунин нигаред
Бозии Stone II Leetcode

Мо ҳар як аломатро дар сатри вуруд ба ҳисоб гирифта, дар массива нигоҳ медорем. Тавре ки мо аллакай қайд кардем, сатр, ки палиндром аст, танҳо як аломат дошта метавонад, ки шумораи тоқро такрор мекунад. Ҳамин тавр, натиҷа аз ҳисоби аломатҳо як камтар хоҳад буд. Пас аз нигоҳ доштани ҳар як пайдоиши ҳарфҳо дар массив. Пас аз он мо массивро аз i = 0 то i мегузарем, ки аз 26 камтар аст. Ин аз он сабаб аст, ки дар маҷмӯъ 26 аломат мавҷуд аст ва мо бояд гумон кунем, ки дар сатри дода эҳтимолияти пайдо шудани 26 аломат вуҷуд дорад.

Ҳангоми гузаштан аз массив мо месанҷем, ки агар тақсим кардани ҳар як ҳисоб ба 2 боқимонда боқӣ монад, агар он дуруст бошад, он гоҳ шумораи натиҷаҳоро 1 зиёд мекунад (баромади ++). Пас аз гузаштан аз массив, агар ҳисоб ҳамчун сифр боқӣ монад, ин маънои онро дорад, ки мо дар аломате тоқӣ чизе намеёбем, ки сатр аллакай палиндром аст, мо 1 бозмегардем, бармегардем (баромади-0), зеро мо аллакай баромадро қайд кардем ҳисоб кардани аломатҳо ва аз ин рӯ мо натиҷа гирифтем.

рамз  

Коди C ++ барои дарёфт кардани воридоти ҳадди ақал барои ташаккули палиндром бо ҷойивазкунии иҷозатдодашуда

#include<iostream>

using namespace std;

int getMinimumInsertion(string str)
{
    int l = str.length(),output = 0;

    int countChar[26] = { 0 };
    for (int i = 0; i < l; i++)
        countChar[str[i] - 'a']++;

    for (int i = 0; i < 26; i++)
        if (countChar[i] % 2 == 1)
            output++;

    return (output == 0) ? 0 : output - 1;
}
int main()
{
    string str = "malyalam";
    cout << getMinimumInsertion(str);

    return 0;
}
1

Рамзи Java барои пайдо кардани замимаҳои ҳадди аққал барои ташкили палиндром бо ҷойивазкунии иҷозатдодашуда

class insertionToPalindrome
{
    public static int getMinimumInsertion(String str)
    {
        int l = str.length(),output = 0;

        int countChar[] = new int[26];

        for (int i = 0; i < l; i++)
            countChar[str.charAt(i) - 'a']++;

        for (int i = 0; i < 26; i++)
        {
            if (countChar[i] % 2 == 1)
                output++;
        }

        return (output == 0) ? 0 : output - 1;
    }
    public static void main(String[] args)
    {
        String str = "malyalam";
        System.out.println(getMinimumInsertion(str));
    }
}
1

Таҳлили мураккабӣ  

Мураккабии вақт

Эй (н) ки дар "Н" миқдори аломатҳо дар сатри вуруд мебошад.

ҳамчунин нигаред
Рақамҳои Top (ё зуд-зуд) -ро дар ҷараён пайдо кунед

Мураккабии фазо

О (1), зеро мо массиви изофии дорои андозаи доимӣ сохтем. Ҳамин тавр мураккабии фазо доимӣ аст.