Рубрики

Обратная строка без использования какой-либо временной переменной

Нам дают строку. Нам также даны индексы первых и последних символов в строке. Задача состоит в том, чтобы перевернуть строку без использования каких-либо дополнительных переменных.

Примеры:

Input  : str = "abc"
Output : str = "cba" 

Input :  str = "GeeksforGeeks"
Output : str = "skeeGrofskeeG"

Если мы посмотрим на программу, чтобы обратить строку или массив , все, что нам нужно сделать, это поменять местами два символа. Идея состоит в том, чтобы использовать XOR для замены переменной . Ниже приведена реализация идеи.

C ++

// C ++ Программа для обращения строки без
// используя временную переменную
#include <bits/stdc++.h>

using namespace std;

  
// Функция для обращения строки и возврата обнаруженной строки

string reversingString(string str, int start, int end)

{

    // Итерация цикла до начала не равна концу

    while (start < end)

    {

        // XOR для замены переменной

        str[start] ^= str[end];

        str[end] ^= str[start];

        str[start] ^= str[end];

  

        ++start;

        --end;

    }

    return str;

}

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

int main()

{

    string s = "GeeksforGeeks";

    cout << reversingString(s, 0, 12);

    return 0;

}

Джава

// Java-программа для обращения строки без
// используя временную переменную

import java.util.*;

  

class GFG 

{

  
// Функция для переворачивания строки и
// вернуть обнаруженную строку

static String reversingString(char []str,

                               int start, 

                               int end)

{

    // Итерация цикла до начала не равна концу

    while (start < end)

    {

        // XOR для замены переменной

        str[start] ^= str[end];

        str[end] ^= str[start];

        str[start] ^= str[end];

  

        ++start;

        --end;

    }

    return String.valueOf(str);

}

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

public static void main(String[] args) 

{

    String s = "GeeksforGeeks";

    System.out.println(reversingString

                      (s.toCharArray(), 0, 12));

}
}

  
// Этот код предоставлен 29AjayKumar

python3

# Python3 Программа для обращения строки
# без использования временной переменной

  
# Функция для обращения строки и
# вернуть обратную строку

def reversingString(str, start, end):

      

    # Повторение цикла до начала не равно концу

    while (start < end):

  

        # XOR для замены переменной

        str = (str[:start] + chr(ord(str[start]) ^ 

                                 ord(str[end])) + 

                                 str[start + 1:]);

        str = (str[:end] + chr(ord(str[start]) ^ 

                               ord(str[end])) + 

                               str[end + 1:]);

        str = (str[:start] + chr(ord(str[start]) ^ 

                                 ord(str[end])) + 

                                 str[start + 1:]);

  

        start += 1;

        end -= 1;

    return str;

  
Код водителя

s = "GeeksforGeeks";

print(reversingString(s, 0, 12));

  
# Этот код предоставлен 29AjayKumar

C #

// C # Программа для обращения строки без
// используя временную переменную

using System;

      

class GFG 

{

  
// Функция для переворачивания строки и
// вернуть обнаруженную строку

static String reversingString(char []str,

                              int start, 

                              int end)

{

    // повторяем цикл до начала

    // не равно концу

    while (start < end)

    {

        // XOR для замены переменной

        str[start] ^= str[end];

        str[end] ^= str[start];

        str[start] ^= str[end];

  

        ++start;

        --end;

    }

    return String.Join("", str);

}

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

public static void Main(String[] args) 

{

    String s = "GeeksforGeeks";

    Console.WriteLine(reversingString

                     (s.ToCharArray(), 0, 12));

}
}

  
// Этот код предоставлен 29AjayKumar

Выход:

 skeeGrofskeeG

Если нам разрешено использовать библиотечную функцию, мы также можем использовать идею, обсуждаемую для быстрого обращения строки в C ++ . Нам даже не нужны индексы первых и последних символов.

C ++

// реверсирование строки с использованием reverse ()
#include<bits/stdc++.h>

using namespace std;

  

int main()

{

   string str = "geeksforgeeks";

      

   // Обратный str [beign..end]

   reverse(str.begin(), str.end());

      

   cout << str;

   return 0;

}

Джава

// реверсирование строки с использованием reverse ()

class GFG 

{

public static void main(String[] args)

{

    StringBuilder str = new StringBuilder("geeksforgeeks");

      

    // Обратный str [beign..end]

    str.reverse();

    System.out.println(str);

}
}

  
// Этот код добавлен
// by PrinciRaj1992

python3

# Сторнирование строки с использованием reverse ()

str = "geeksforgeeks";

      
# Обратный str [beign..end]

str = "".join(reversed(str))

      

print(str);

  
# Этот код предоставлен 29AjayKumar

C #

// реверсирование строки с использованием reverse ()

using System;

using System.Linq;                 

  

class GFG 

{

public static void Main(String[] args)

{

    String str = "geeksforgeeks";

      

    // Обратный str [beign..end]

    str = new string(str.Reverse().ToArray());

    Console.WriteLine(str);

}
}

  
// Этот код предоставлен 29AjayKumar

Выход:

 skeegrofskeeg

Эта статья предоставлена г-ном Сомешем Авастхи . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

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

Обратная строка без использования какой-либо временной переменной

0.00 (0%) 0 votes