反转保留空间位置的字符串

编写一个程序来反转给定的字符串,同时保留空格的位置。

null

例如:

Input  : "abc de"Output : edc baInput : "intern at geeks"Output : skeegt an retniInput : "Help others"Output : sreh topleH

图片[1]-反转保留空间位置的字符串-yiteyi-C++库

  1. 创建一个字符串来存储结果。标记给定字符串在该字符串中的空格位置。
  2. 将输入字符串中的字符按相反顺序插入结果字符串。
  3. 插入字符时,检查结果字符串是否在索引“j”处包含空格。如果包含,我们将角色复制到下一个位置。

以下是上述步骤的实施情况。

C++

// C++ program to reverse a string preserving
// spaces.
#include <iostream>
using namespace std;
// Function to reverse the string
// and preserve the space position
string reverses(string str)
{
// Mark spaces in result
int n = str.size();
string result(n, ' ' );
for ( int i = 0; i < n; i++)
if (str[i] == ' ' )
result[i] = ' ' ;
// Traverse input string from beginning
// and put characters in result from end
int j = n - 1;
for ( int i = 0; i < str.length(); i++) {
// Ignore spaces in input string
if (str[i] != ' ' ) {
// ignore spaces in result.
while (result[j] == ' ' )
j--;
result[j] = str[i];
j--;
}
}
return result;
}
// Driver code
int main()
{
string str = "internship at geeks for geeks" ;
cout << reverses(str) << endl;
return 0;
}


JAVA

// Java program to reverse a string
// preserving spaces.
public class ReverseStringPreserveSpace {
// Function to reverse the string
// and preserve the space position
static void reverses(String str)
{
char [] inputArray = str.toCharArray();
char [] result = new char [inputArray.length];
// Mark spaces in result
for ( int i = 0 ; i < inputArray.length; i++) {
if (inputArray[i] == ' ' ) {
result[i] = ' ' ;
}
}
// Traverse input string from beginning
// and put characters in result from end
int j = result.length - 1 ;
for ( int i = 0 ; i < inputArray.length; i++) {
// Ignore spaces in input string
if (inputArray[i] != ' ' ) {
// ignore spaces in result.
if (result[j] == ' ' ) {
j--;
}
result[j] = inputArray[i];
j--;
}
}
System.out.println(String.valueOf(result));
}
// driver function
public static void main(String[] args)
{
reverses( "internship at geeks for geeks" );
}
}
// This code is contributed by Rishabh Jain


Python3

# Python3 program to reverse a string preserving
# spaces.
# Function to reverse the string
# and preserve the space position
def reverses(st):
# Mark spaces in result
n = len (st)
result = [ 0 ] * n
for i in range (n):
if (st[i] = = ' ' ):
result[i] = ' '
# Traverse input string from beginning
# and put characters in result from end
j = n - 1
for i in range ( len (st)):
# Ignore spaces in input string
if (st[i] ! = ' ' ):
# Ignore spaces in result.
if (result[j] = = ' ' ):
j - = 1
result[j] = st[i]
j - = 1
return ''.join(result)
# Driver code
if __name__ = = "__main__" :
st = "internship at geeks for geeks"
print (reverses(st))
# This code is contributed by ukasp


C#

// C# program to reverse a
// string preserving spaces.
using System;
class GFG {
// Function to reverse the string
// and preserve the space position
static void reverses( string str)
{
char [] inputArray = str.ToCharArray();
char [] result = new char [inputArray.Length];
// Mark spaces in result
for ( int i = 0; i < inputArray.Length; i++) {
if (inputArray[i] == ' ' ) {
result[i] = ' ' ;
}
}
// Traverse input string from beginning
// and put characters in result from end
int j = result.Length - 1;
for ( int i = 0; i < inputArray.Length; i++) {
// Ignore spaces in input string
if (inputArray[i] != ' ' ) {
// ignore spaces in result.
if (result[j] == ' ' ) {
j--;
}
result[j] = inputArray[i];
j--;
}
}
for ( int i = 0; i < result.Length; i++)
Console.Write(result[i]);
}
// Driver code
public static void Main()
{
reverses( "internship at geeks for geeks" );
}
}
// This code is contributed by Sam007


Javascript

<script>
// Javascript program to reverse a string
// preserving spaces.
// Function to reverse the string
// and preserve the space position
function reverses(str)
{
let inputArray = str.split( "" );
let result = new Array(inputArray.length);
// Mark spaces in result
for (let i = 0; i < inputArray.length; i++) {
if (inputArray[i] == ' ' ) {
result[i] = ' ' ;
}
}
// Traverse input string from beginning
// and put characters in result from end
let j = result.length - 1;
for (let i = 0; i < inputArray.length; i++) {
// Ignore spaces in input string
if (inputArray[i] != ' ' ) {
// ignore spaces in result.
if (result[j] == ' ' ) {
j--;
}
result[j] = inputArray[i];
j--;
}
}
document.write((result).join( "" ));
}
// driver function
reverses( "internship at geeks for geeks" );
// This code is contributed by ab2127
</script>


输出:

skeegrofsk ee gtapi hsn retni

时间复杂度->O(N) 辅助空间->O(N)

优化方案 这个想法是使用两个指针来反转。

C++

// C++ program to implement
// the above approach
#include <iostream>
using namespace std;
void preserveSpace(string &str)
{
int n = str.length();
// Initialize two pointers as two corners
int start = 0;
int end = n - 1;
// Move both pointers toward each other
while (start < end) {
// If character at start or end is space,
// ignore it
if (str[start] == ' ' ) {
start++;
continue ;
}
else if (str[end] == ' ' ) {
end--;
continue ;
}
// If both are not spaces, do swap
else {
swap(str[start], str[end]);
start++;
end--;
}
}
}
// Driver code
int main()
{
string str = "internship at geeks for geeks" ;
preserveSpace(str);
cout << str;
return 0;
}


JAVA

// Java program to implement
// the above approach
import java.io.*;
import java.util.*;
class GFG{
public static void preserveSpace(String str)
{
int n = str.length();
// Initialize two pointers as two corners
int start = 0 ;
int end = n - 1 ;
char [] Str = str.toCharArray();
// Move both pointers toward each other
while (start < end)
{
// If character at start or end
// is space, ignore it
if (Str[start] == ' ' )
{
start++;
continue ;
}
else if (Str[end] == ' ' )
{
end--;
continue ;
}
// If both are not spaces, do swap
else
{
char temp = Str[start];
Str[start] = Str[end];
Str[end] = temp;
start++;
end--;
}
}
System.out.println(String.valueOf(Str));
}
// Driver Code
public static void main(String[] args)
{
String str = "internship at geeks for geeks" ;
preserveSpace(str);
}
}
// This code is contributed by divyeshrabadiya07


Python3

# Python3 program to implement
# the above approach
def preserveSpace( Str ):
n = len ( Str )
Str = list ( Str )
# Initialize two pointers
# as two corners
start = 0
end = n - 1
# Move both pointers
# toward each other
while (start < end):
# If character at start
# or end is space,
# ignore it
if ( Str [start] = = ' ' ):
start + = 1
continue
elif ( Str [end] = = ' ' ):
end - = 1
continue
# If both are not
# spaces, do swap
else :
Str [start], Str [end] = ( Str [end],
Str [start])
start + = 1
end - = 1
print (''.join( Str ))
# Driver code
Str = "internship at geeks for geeks"
preserveSpace( Str );
# This code is contributed by avanitrachhadiya2155


C#

// C# program to implement
// the above approach
using System;
using System.Collections.Generic;
class GFG{
static void preserveSpace( string str)
{
int n = str.Length;
// Initialize two pointers
// as two corners
int start = 0;
int end = n - 1;
char [] Str = str.ToCharArray();
// Move both pointers toward
// each other
while (start < end)
{
// If character at start or
// end is space, ignore it
if (Str[start] == ' ' )
{
start++;
continue ;
}
else if (Str[end] == ' ' )
{
end--;
continue ;
}
// If both are not spaces, do swap
else
{
char temp = Str[start];
Str[start] = Str[end];
Str[end] = temp;
start++;
end--;
}
}
Console.Write( new string (Str));
}
// Driver code
static void Main()
{
string str = "internship at geeks for geeks" ;
preserveSpace(str);
}
}
// This code is contributed by divyesh072019


Javascript

<script>
// Javascript program to implement
// the above approach
function preserveSpace(str)
{
let n = str.length;
// Initialize two pointers
// as two corners
let start = 0;
let end = n - 1;
let Str = str.split( '' );
// Move both pointers toward
// each other
while (start < end)
{
// If character at start or
// end is space, ignore it
if (Str[start] == ' ' )
{
start++;
continue ;
}
else if (Str[end] == ' ' )
{
end--;
continue ;
}
// If both are not spaces, do swap
else
{
let temp = Str[start];
Str[start] = Str[end];
Str[end] = temp;
start++;
end--;
}
}
document.write(Str.join( "" ));
}
let str = "internship at geeks for geeks" ;
preserveSpace(str);
</script>


输出:

skeegrofsk ee gtapi hsn retni

本文由 里沙布·贾因 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 写极客。组织 或者把你的文章寄到contribute@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。 如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享