Рубрики

Обратные слова в заданной строке

Пример: Пусть входной строкой будет «Мне очень нравится эта программа». Функция должна изменить строку на «очень очень запрограммировать это, как я»

Примеры :

Input: s = “geeks quiz practice code”
Output: s = “code practice quiz geeks”

Input: s = “getting good at coding needs a lot of practice”
Output: s = “practice of lot a needs coding at good getting”

Алгоритм :

  • Первоначально, поменять отдельные слова данной строки одно за другим, для приведенного выше примера, после обращения отдельных слов строка должна быть «i ekil siht margorp yrev hcum».
  • Переверните всю строку от начала до конца, чтобы получить желаемый результат «очень запрограммируйте это, как я» в приведенном выше примере.

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

// Программа CPP для обращения строки
#include <stdio.h>

  
// Функция для изменения любой последовательности
// начинаем с указателя begin и
// заканчивается указателем end

void reverse(char* begin, char* end)

{

    char temp;

    while (begin < end) {

        temp = *begin;

        *begin++ = *end;

        *end-- = temp;

    }

}

  
// Функция для обращения слов * /

void reverseWords(char* s)

{

    char* word_begin = s;

  

    // Граница слова

    char* temp = s;

  

    // Обращаем отдельные слова как

    // объяснил на первом шаге

    while (*temp) {

        temp++;

        if (*temp == '\0') {

            reverse(word_begin, temp - 1);

        }

        else if (*temp == ' ') {

            reverse(word_begin, temp - 1);

            word_begin = temp + 1;

        }

    }

  

    // Перевернуть всю строку

    reverse(s, temp - 1);

}

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

int main()

{

    char s[] = "i like this program very much";

    char* temp = s;

    reverseWords(s);

    printf("%s", s);

    getchar();

    return 0;

}

Выход:

much very program this like i

Приведенный выше код не обрабатывает случаи, когда строка начинается с пробела. Следующая версия обрабатывает этот конкретный случай и не делает ненужных вызовов для отмены функции в случае нескольких пробелов между ними. Спасибо rka143 за предоставление этой версии.

void reverseWords(char* s)

{

    char* word_begin = NULL;

    char* temp = s; / * temp для ограничения слова * /

  

    / * ШАГ 1 вышеуказанного алгоритма * /

    while (*temp) {

        / * Это условие, чтобы строка начиналась с

          допустимый символ (не пробел) только * /

        if ((word_begin == NULL) && (*temp != ' ')) {

            word_begin = temp;

        }

        if (word_begin && ((*(temp + 1) == ' ') || (*(temp + 1) == '\0'))) {

            reverse(word_begin, temp);

            word_begin = NULL;

        }

        temp++;

    } / * Конец времени * /

  

    / * ШАГ 2 вышеуказанного алгоритма * /

    reverse(s, temp - 1);

}

Сложность времени: O (n)
мы можем выполнить вышеуказанную задачу, разбив и сохранив строку в обратном порядке.

Джава

// Java программа для обращения строки
// s = input ()

public class ReverseWords {

  

    public static void main(String[] args)

    {

        String s[] = "i like this program very much".split(" ");

        String ans = "";

        for (int i = s.length - 1; i >= 0; i--) {

            ans += s[i] + " ";

        }

        System.out.println("Reversed String:");

        System.out.println(ans.substring(0, ans.length() - 1));

    }

}

C #

// C # программа для обращения строки
// s = input ()

  

using System;

public class ReverseWords {

  

    public static void Main()

    {

        string[] s = "i like this program very much".Split(' ');

        string ans = "";

        for (int i = s.Length - 1; i >= 0; i--) {

            ans += s[i] + " ";

        }

        Console.Write("Reversed String:\n");

        Console.Write(ans.Substring(0, ans.Length - 1));

    }

}

python3

# Python3 программа для обращения строки
# s = input ()

s = "i like this program very much"

words = s.split(' ')

string =[]

for word in words:

    string.insert(0, word)

  

print("Reversed String:")

print(" ".join(string))

  
# Решение, предложенное Бу Уттам

Выход:

Reversed String:
much very program this like i

Пожалуйста, пишите комментарии, если вы обнаружите какую-либо ошибку в приведенном выше коде / алгоритме, или найдете другие способы решения той же проблемы

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

Обратные слова в заданной строке

0.00 (0%) 0 votes