Рубрики

Печатать символы с нечетными частотами в порядке появления

Дана строка str, содержащая только строчные буквы. Задача состоит в том, чтобы печатать символы с нечетной частотой в порядке их появления.

Примечание . Повторяющиеся элементы с нечетной частотой печатаются столько раз, сколько они встречаются в порядке их появления.

Примеры:

Input: str = “geeksforgeeks”
Output: for

‘f’, ‘o’ and ‘r’ are the only characters with odd frequencies.

Input: str = “elephant”
Output: lphant

Подход: создать массив частот для хранения частоты каждого символа данной строки str . Пройдите через строку str еще раз и проверьте, является ли частота этого символа нечетной. Если да, то напечатайте символ.

Ниже приведена реализация вышеуказанного подхода:

C ++

CharacterFrequency
‘g’2
‘e’4
‘k’2
‘s’2
‘f’1
‘o’1
‘r’1

Джава

// C ++ реализация подхода
#include <bits/stdc++.h>

using namespace std;

#define SIZE 26

  
// Функция для печати символов нечетной частоты
// в порядке их появления

void printChar(string str, int n)

{

  

    // Для сохранения частоты каждого из

    // символ строки

    int freq[SIZE];

  

    // Инициализируем все элементы freq [] в 0

    memset(freq, 0, sizeof(freq));

  

    // Обновляем частоту каждого символа

    for (int i = 0; i < n; i++)

        freq[str[i] - 'a']++;

  

    // Обход строки за символом

    for (int i = 0; i < n; i++) {

  

        // Если частота текущего символа нечетна

        if (freq[str[i] - 'a'] % 2 == 1) {

            cout << str[i];

        }

    }

}

  
// Код драйвера

int main()

{

    string str = "geeksforgeeks";

    int n = str.length();

    printChar(str, n);

  

    return 0;

}

python3

// Java реализация подхода

class GFG {

    // Функция для печати символов нечетной частоты

    // в порядке их появления

    public static void printChar(String str, int n)

    {

  

        // Для сохранения частоты каждого из

        // символ строки

        int[] freq = new int[26];

  

        // Обновляем частоту каждого символа

        for (int i = 0; i < n; i++)

            freq[str.charAt(i) - 'a']++;

  

        // Обход строки за символом

        for (int i = 0; i < n; i++) {

  

            // Если частота текущего символа нечетна

            if (freq[str.charAt(i) - 'a'] % 2 == 1) {

                System.out.print(str.charAt(i));

            }

        }

    }

  

    // Код драйвера

    public static void main(String[] args)

    {

        String str = "geeksforgeeks";

        int n = str.length();

        printChar(str, n);

    }

}

  
// Этот код предоставлен Naman_Garg.

C #

# Python3 реализация подхода

import sys

import math

  
# Функция для печати символов нечетной частоты
# в порядке их появления

def printChar(str_, n):

  

    # Для хранения частоты каждого из

    # символ строки и

    # Инициализировать все элементы freq [] в 0

    freq = [0] * 26

  

    # Обновлять частоту каждого символа

    for i in range(n):

        freq[ord(str_[i]) - ord('a')] += 1

      

    # Траверса str символ за символом

    for i in range(n):

  

        # Если частота текущего символа нечетна

        if (freq[ord(str_[i]) - 

                 ord('a')]) % 2 == 1:

            print("{}".format(str_[i]), end = "")

  
# Код драйвера

if __name__=='__main__':

    str_ = "geeksforgeeks"

    n = len(str_)

    printChar(str_, n)

  
# Этот код предоставлен Викашем Кумаром 37


Выход:

for

Сложность времени: O (n)
Вспомогательное пространство: O (1)

Рекомендуемые посты:

Печатать символы с нечетными частотами в порядке появления

0.00 (0%) 0 votes