Skip to main content

Reverse alternate k characters in a string

Here given code implementation process.

//C Program
//Reverse alternate k characters in a string
#include <stdio.h>

//Reverse the substrings between given location
void reverse(char * text, int start, int end)
{
	if (start == end)
	{
		return;
	}
	char temp;
	//Reverse the string element from start to end location
	for (start; start < end; start++, end--)
	{
		temp = text[start];
		text[start] = text[end];
		text[end] = temp;
	}
}
//This function is reversing alternate groups of k characters
void reverse_alternate_char(char * text, int k, int size)
{
	if (k <= 0 || size <= 0)
	{
		return;
	}
	printf("\n Given String : %s\n", text);
	for (int i = 0; i <= size - k; i += k)
	{
		reverse(text, i, i + (k - 1));
		// skip group of k characters
		i += k;
	}
	printf(" Alternate Characters : %d\n", k);
}
int main()
{
	//Define the character elements
	char text1[] = "123ABC567EFG";
	//Get the size
	int size = sizeof(text1) / sizeof(text1[0]) - 1;
	//Get result
	reverse_alternate_char(text1, 3, size);
	printf(" After Result : %s\n", text1);
	// Other cases
	char text2[] = "12345ABCDE678";
	size = sizeof(text2) / sizeof(text2[0]) - 1;
	reverse_alternate_char(text2, 5, size);
	printf(" After Result : %s\n", text2);
	char text3[] = "1234ABCD1234ABCDEF";
	size = sizeof(text3) / sizeof(text3[0]) - 1;
	reverse_alternate_char(text3, 4, size);
	printf(" After Result : %s\n", text3);
	char text4[] = "ABCDEFGHIJKLMO";
	size = sizeof(text4) / sizeof(text4[0]) - 1;
	reverse_alternate_char(text4, 2, size);
	printf(" After Result : %s\n", text4);
	return 0;
}

Output

 Given String : 123ABC567EFG
 Alternate Characters : 3
 After Result : 321ABC765EFG

 Given String : 12345ABCDE678
 Alternate Characters : 5
 After Result : 54321ABCDE678

 Given String : 1234ABCD1234ABCDEF
 Alternate Characters : 4
 After Result : 4321ABCD4321ABCDEF

 Given String : ABCDEFGHIJKLMO
 Alternate Characters : 2
 After Result : BACDFEGHJIKLOM
//Java Program 
//Reverse alternate k characters in a string
class MyString
{
	//Reverse the substrings between given location
	//Returns reversal form of substring of given location
	public String reverse(String text, int start, int end)
	{
		if (start == end)
		{
			return "";
		}
		String result = "";
		//Reverse the string element from start to end location
		for (int i = start; i <=end ; i++)
		{
			result = text.charAt(i)+result;
		}
		return result;
	}
	//This function is reversing alternate groups of k characters
	public String reverse_alternate_char(String text, int k)
	{
		int size = text.length();

		if (k <= 0 || size <= 0)
		{
			return text;
		}
		//loop controlling variable [i]
		int i = 0;
		//This is store the resultant result
		String result = "";

		//This is used to detect reversal location
      	int counter = 0;

		System.out.print("\n Given String : " + text + "\n");
		
		//Loop iterating string elements
		for (i = 0; i < size ; i++)
		{
           	//Condition which is check valid reverse k characters elements
            if(counter==0 && i <= size - k)
            {
				result += reverse(text, i, i + (k - 1));
                
                counter = k;
            	
            	//Skip group of k-1 characters
                i = i + (k - 1);
            }
          	else
            {
              counter--;
              result += text.charAt(i);
            }
		}
		System.out.print(" Alternate Characters : " + k + "\n");
		return result;
	}
	public static void main(String[] args)
	{
		MyString obj = new MyString();
		String text = "123ABC567EFG";
		text = obj.reverse_alternate_char(text, 3);
		System.out.print(" After Result : " + text + "\n");
		text = "12345ABCDE678";
		text = obj.reverse_alternate_char(text, 5);
		System.out.print(" After Result : " + text + "\n");
		text = "1234ABCD1234ABCDEF";
		text = obj.reverse_alternate_char(text, 4);
		System.out.print(" After Result : " + text + "\n");
		text = "ABCDEFGHIJKLMO";
		text = obj.reverse_alternate_char(text, 2);
		System.out.print(" After Result : " + text + "\n");
	}
}

Output

 Given String : 123ABC567EFG
 Alternate Characters : 3
 After Result : 321ABC765EFG

 Given String : 12345ABCDE678
 Alternate Characters : 5
 After Result : 54321ABCDE678

 Given String : 1234ABCD1234ABCDEF
 Alternate Characters : 4
 After Result : 4321ABCD4321ABCDEF

 Given String : ABCDEFGHIJKLMO
 Alternate Characters : 2
 After Result : BACDFEGHJIKLOM
//Include header file
#include <iostream>
#include<string.h>
using namespace std;

//C++ Program 
//Reverse alternate k characters in a string
class MyString
{
	public:
		//Reverse the substrings between given location
		//Returns reversal form of substring of given location
		string reverse(string text, int start, int end)
		{
			if (start == end)
			{
				return "";
			}
			string result = "";
			//Reverse the string element from start to end location
			for (int i = start; i <= end; i++)
			{
				result = text[i] + result;
			}
			return result;
		}
	//This function is reversing alternate groups of k characters
	string reverse_alternate_char(string text, int k)
	{
		int size = text.size();
		if (k <= 0 || size <= 0)
		{
			return text;
		}
		//loop controlling variable [i,j]
		int i = 0;
		int j = 0;
		//This is store the resultant result
		string result = "";
		//This is used to detect reversal location
		int counter = 0;
		cout << "\n Given String : " << text << "\n";
		//Loop iterating string elements
		for (i = 0; i < size; i++)
		{
			//Condition which is check valid reverse k characters elements
			if (counter == 0 && i <= size - k)
			{
				result += this->reverse(text, i, i + (k - 1));
				counter = k;
				//Skip group of k-1 characters
				i = i + (k - 1);
			}
			else
			{
				counter--;
				result += text[i];
			}
		}
		cout << " Alternate Characters : " << k << "\n";
		return result;
	}
};
int main()
{
	MyString obj = MyString();
	string text = "123ABC567EFG";
	text = obj.reverse_alternate_char(text, 3);
	cout << " After Result : " << text << "\n";
	text = "12345ABCDE678";
	text = obj.reverse_alternate_char(text, 5);
	cout << " After Result : " << text << "\n";
	text = "1234ABCD1234ABCDEF";
	text = obj.reverse_alternate_char(text, 4);
	cout << " After Result : " << text << "\n";
	text = "ABCDEFGHIJKLMO";
	text = obj.reverse_alternate_char(text, 2);
	cout << " After Result : " << text << "\n";
	return 0;
}

Output

 Given String : 123ABC567EFG
 Alternate Characters : 3
 After Result : 321ABC765EFG

 Given String : 12345ABCDE678
 Alternate Characters : 5
 After Result : 54321ABCDE678

 Given String : 1234ABCD1234ABCDEF
 Alternate Characters : 4
 After Result : 4321ABCD4321ABCDEF

 Given String : ABCDEFGHIJKLMO
 Alternate Characters : 2
 After Result : BACDFEGHJIKLOM
//Include namespace system
using System;

//C# Program 
//Reverse alternate k characters in a string
class MyString
{
	//Reverse the substrings between given location
	//Returns reversal form of substring of given location
	public String reverse(String text, int start, int end)
	{
		if (start == end)
		{
			return "";
		}
		String result = "";
		//Reverse the string element from start to end location
		for (int i = start; i <= end; i++)
		{
			result = text[i] + result;
		}
		return result;
	}
	//This function is reversing alternate groups of k characters
	public String reverse_alternate_char(String text, int k)
	{
		int size = text.Length;
		if (k <= 0 || size <= 0)
		{
			return text;
		}
		//loop controlling variable [i]
		int i = 0;
		//This is store the resultant result
		String result = "";
		//This is used to detect reversal location
		int counter = 0;
		Console.Write("\n Given String : " + text + "\n");
		//Loop iterating string elements
		for (i = 0; i < size; i++)
		{
			//Condition which is check valid reverse k characters elements
			if (counter == 0 && i <= size - k)
			{
				result += reverse(text, i, i + (k - 1));
				counter = k;
				//Skip group of k-1 characters
				i = i + (k - 1);
			}
			else
			{
				counter--;
				result += text[i];
			}
		}
		Console.Write(" Alternate Characters : " + k + "\n");
		return result;
	}
	public static void Main(String[] args)
	{
		MyString obj = new MyString();
		String text = "123ABC567EFG";
		text = obj.reverse_alternate_char(text, 3);
		Console.Write(" After Result : " + text + "\n");
		text = "12345ABCDE678";
		text = obj.reverse_alternate_char(text, 5);
		Console.Write(" After Result : " + text + "\n");
		text = "1234ABCD1234ABCDEF";
		text = obj.reverse_alternate_char(text, 4);
		Console.Write(" After Result : " + text + "\n");
		text = "ABCDEFGHIJKLMO";
		text = obj.reverse_alternate_char(text, 2);
		Console.Write(" After Result : " + text + "\n");
	}
}

Output

 Given String : 123ABC567EFG
 Alternate Characters : 3
 After Result : 321ABC765EFG

 Given String : 12345ABCDE678
 Alternate Characters : 5
 After Result : 54321ABCDE678

 Given String : 1234ABCD1234ABCDEF
 Alternate Characters : 4
 After Result : 4321ABCD4321ABCDEF

 Given String : ABCDEFGHIJKLMO
 Alternate Characters : 2
 After Result : BACDFEGHJIKLOM
<?php
//Php Program 
//Reverse alternate k characters in a string
class MyString
{
	//Reverse the substrings between given location
	//Returns reversal form of substring of given location
	public	function reverse($text, $start, $end)
	{
		if ($start == $end)
		{
			return "";
		}
		$result = "";
		//Reverse the string element from start to end location
		for ($i = $start; $i <= $end; $i++)
		{
			$result = $text[$i] . $result;
		}
		return $result;
	}
	//This function is reversing alternate groups of k characters
	public	function reverse_alternate_char($text, $k)
	{
		$size = strlen($text);
		if ($k <= 0 || $size <= 0)
		{
			return $text;
		}
		//loop controlling variable [i]
		$i = 0;
		//This is store the resultant result
		$result = "";
		//This is used to detect reversal location
		$counter = 0;
		echo "\n Given String : ". $text ."\n";
		//Loop iterating string elements
		for ($i = 0; $i < $size; $i++)
		{
			//Condition which is check valid reverse k characters elements
			if ($counter == 0 && $i <= $size - $k)
			{
				$result .= $this->reverse($text, $i, $i + ($k - 1));
				$counter = $k;
				//Skip group of k-1 characters
				$i = $i + ($k - 1);
			}
			else
			{
				$counter--;
				$result .= $text[$i];
			}
		}
		echo " Alternate Characters : ". $k ."\n";
		return $result;
	}
}

function main()
{
	$obj = new MyString();
	$text = "123ABC567EFG";
	$text = $obj->reverse_alternate_char($text, 3);
	echo " After Result : ". $text ."\n";
	$text = "12345ABCDE678";
	$text = $obj->reverse_alternate_char($text, 5);
	echo " After Result : ". $text ."\n";
	$text = "1234ABCD1234ABCDEF";
	$text = $obj->reverse_alternate_char($text, 4);
	echo " After Result : ". $text ."\n";
	$text = "ABCDEFGHIJKLMO";
	$text = $obj->reverse_alternate_char($text, 2);
	echo " After Result : ". $text ."\n";
}
main();

Output

 Given String : 123ABC567EFG
 Alternate Characters : 3
 After Result : 321ABC765EFG

 Given String : 12345ABCDE678
 Alternate Characters : 5
 After Result : 54321ABCDE678

 Given String : 1234ABCD1234ABCDEF
 Alternate Characters : 4
 After Result : 4321ABCD4321ABCDEF

 Given String : ABCDEFGHIJKLMO
 Alternate Characters : 2
 After Result : BACDFEGHJIKLOM
//Node Js Program 
//Reverse alternate k characters in a string
class MyString
{
	//Reverse the substrings between given location
	//Returns reversal form of substring of given location
	reverse(text, start, end)
	{
		if (start == end)
		{
			return "";
		}
		var result = "";
		//Reverse the string element from start to end location
		for (var i = start; i <= end; i++)
		{
			result = text[i] + result;
		}
		return result;
	}
	//This function is reversing alternate groups of k characters
	reverse_alternate_char(text, k)
	{
		var size = text.length;
		if (k <= 0 || size <= 0)
		{
			return text;
		}
		//loop controlling variable [i]
		var i = 0;
		//This is store the resultant result
		var result = "";
		//This is used to detect reversal location
		var counter = 0;
		process.stdout.write("\n Given String : " + text + "\n");
		//Loop iterating string elements
		for (i = 0; i < size; i++)
		{
			//Condition which is check valid reverse k characters elements
			if (counter == 0 && i <= size - k)
			{
				result += this.reverse(text, i, i + (k - 1));
				counter = k;
				//Skip group of k-1 characters
				i = i + (k - 1);
			}
			else
			{
				counter--;
				result += text[i];
			}
		}
		process.stdout.write(" Alternate Characters : " + k + "\n");
		return result;
	}
}

function main()
{
	var obj = new MyString();
	var text = "123ABC567EFG";
	text = obj.reverse_alternate_char(text, 3);
	process.stdout.write(" After Result : " + text + "\n");
	text = "12345ABCDE678";
	text = obj.reverse_alternate_char(text, 5);
	process.stdout.write(" After Result : " + text + "\n");
	text = "1234ABCD1234ABCDEF";
	text = obj.reverse_alternate_char(text, 4);
	process.stdout.write(" After Result : " + text + "\n");
	text = "ABCDEFGHIJKLMO";
	text = obj.reverse_alternate_char(text, 2);
	process.stdout.write(" After Result : " + text + "\n");
}
main();

Output

 Given String : 123ABC567EFG
 Alternate Characters : 3
 After Result : 321ABC765EFG

 Given String : 12345ABCDE678
 Alternate Characters : 5
 After Result : 54321ABCDE678

 Given String : 1234ABCD1234ABCDEF
 Alternate Characters : 4
 After Result : 4321ABCD4321ABCDEF

 Given String : ABCDEFGHIJKLMO
 Alternate Characters : 2
 After Result : BACDFEGHJIKLOM
# Python 3 Program 
# Reverse alternate k characters in a string
class MyString :
	# Reverse the substrings between given location
	# Returns reversal form of substring of given location
	def reverse(self, text, start, end) :
		if (start == end) :
			return ""
		
		result = ""
		# Reverse the string element from start to end location
		i = start
		while (i <= end) :
			result = text[i] + result
			i += 1
		
		return result
	
	# This function is reversing alternate groups of k characters
	def reverse_alternate_char(self, text, k) :
		size = len(text)
		if (k <= 0 or size <= 0) :
			return text
		
		# loop controlling variable [i]
		i = 0
		# This is store the resultant result
		result = ""
		# This is used to detect reversal location
		counter = 0
		print("\n Given String : ", text )
		# Loop iterating string elements
		while (i < size) :
			# Condition which is check valid reverse k characters elements
			if (counter == 0 and i <= size - k) :
				result += self.reverse(text, i, i + (k - 1))
				counter = k
				# Skip group of k-1 characters
				i = i + (k - 1)
			else :
				counter -= 1
				result += text[i]
			
			i += 1
		
		print(" Alternate Characters : ", k )
		return result
	

def main() :
	obj = MyString()
	text = "123ABC567EFG"
	text = obj.reverse_alternate_char(text, 3)
	print(" After Result : ", text )
	text = "12345ABCDE678"
	text = obj.reverse_alternate_char(text, 5)
	print(" After Result : ", text )
	text = "1234ABCD1234ABCDEF"
	text = obj.reverse_alternate_char(text, 4)
	print(" After Result : ", text )
	text = "ABCDEFGHIJKLMO"
	text = obj.reverse_alternate_char(text, 2)
	print(" After Result : ", text )

if __name__ == "__main__": main()

Output

 Given String :  123ABC567EFG
 Alternate Characters :  3
 After Result :  321ABC765EFG

 Given String :  12345ABCDE678
 Alternate Characters :  5
 After Result :  54321ABCDE678

 Given String :  1234ABCD1234ABCDEF
 Alternate Characters :  4
 After Result :  4321ABCD4321ABCDEF

 Given String :  ABCDEFGHIJKLMO
 Alternate Characters :  2
 After Result :  BACDFEGHJIKLOM
# Ruby Program 
# Reverse alternate k characters in a string
class MyString

	# Reverse the substrings between given location
	# Returns reversal form of substring of given location
	def reverse(text, start, ends)
	
		if (start == ends)
		
			return ""
		end
		result = ""
		# Reverse the string element from start to end location
		i = start
		while (i <= ends)
		
			result = text[i] + result
			i += 1
		end
		return result
	end
	# This function is reversing alternate groups of k characters
	def reverse_alternate_char(text, k)
	
		size = text.length()
		if (k <= 0 || size <= 0)
		
			return text
		end
		# loop controlling variable [i]
		i = 0
		# This is store the resultant result
		result = ""
		# This is used to detect reversal location
		counter = 0
		print("\n Given String : ", text ,"\n")
		# Loop iterating string elements
		while (i < size)
		
			# Condition which is check valid reverse k characters elements
			if (counter == 0 && i <= size - k)
			
				result += self.reverse(text, i, i + (k - 1))
				counter = k
				# Skip group of k-1 characters
				i = i + (k - 1)
			else
			
				counter -= 1
				result += text[i]
			end
			i += 1
		end
		print(" Alternate Characters : ", k ,"\n")
		return result
	end
end
def main()

	obj = MyString.new()
	text = "123ABC567EFG"
	text = obj.reverse_alternate_char(text, 3)
	print(" After Result : ", text ,"\n")
	text = "12345ABCDE678"
	text = obj.reverse_alternate_char(text, 5)
	print(" After Result : ", text ,"\n")
	text = "1234ABCD1234ABCDEF"
	text = obj.reverse_alternate_char(text, 4)
	print(" After Result : ", text ,"\n")
	text = "ABCDEFGHIJKLMO"
	text = obj.reverse_alternate_char(text, 2)
	print(" After Result : ", text ,"\n")
end
main()

Output

 Given String : 123ABC567EFG
 Alternate Characters : 3
 After Result : 321ABC765EFG

 Given String : 12345ABCDE678
 Alternate Characters : 5
 After Result : 54321ABCDE678

 Given String : 1234ABCD1234ABCDEF
 Alternate Characters : 4
 After Result : 4321ABCD4321ABCDEF

 Given String : ABCDEFGHIJKLMO
 Alternate Characters : 2
 After Result : BACDFEGHJIKLOM
//Scala Program 
//Reverse alternate k characters in a string
class MyString
{
	//Reverse the substrings between given location
	//Returns reversal form of substring of given location
	def reverse(text: String, start: Int, end: Int): String = {
		if (start == end)
		{
			return "";
		}
		var result: String = "";
		//Reverse the string element from start to end location
		var i: Int = start;
		while (i <= end)
		{
			result = ""+ text(i) + result;
			i += 1;
		}
		return result;
	}
	//This function is reversing alternate groups of k characters
	def reverse_alternate_char(text: String, k: Int): String = {
		var size: Int = text.length();
		if (k <= 0 || size <= 0)
		{
			return text;
		}
		//loop controlling variable [i]
		var i: Int = 0;
		//This is store the resultant result
		var result: String = "";
		//This is used to detect reversal location
		var counter: Int = 0;
		print("\n Given String : " + text + "\n");
		//Loop iterating string elements
		while (i < size)
		{
			//Condition which is check valid reverse k characters elements
			if (counter == 0 && i <= size - k)
			{
				result += reverse(text, i, i + (k - 1));
				counter = k;
				//Skip group of k-1 characters
				i = i + (k - 1);
			}
			else
			{
				counter -= 1;
				result += text(i);
			}
			i += 1;
		}
		print(" Alternate Characters : " + k + "\n");
		return result;
	}
}
object Main
{
	def main(args: Array[String]): Unit = {
		var obj: MyString = new MyString();
		var text: String = "123ABC567EFG";
		text = obj.reverse_alternate_char(text, 3);
		print(" After Result : " + text + "\n");
		text = "12345ABCDE678";
		text = obj.reverse_alternate_char(text, 5);
		print(" After Result : " + text + "\n");
		text = "1234ABCD1234ABCDEF";
		text = obj.reverse_alternate_char(text, 4);
		print(" After Result : " + text + "\n");
		text = "ABCDEFGHIJKLMO";
		text = obj.reverse_alternate_char(text, 2);
		print(" After Result : " + text + "\n");
	}
}

Output

 Given String : 123ABC567EFG
 Alternate Characters : 3
 After Result : 321ABC765EFG

 Given String : 12345ABCDE678
 Alternate Characters : 5
 After Result : 54321ABCDE678

 Given String : 1234ABCD1234ABCDEF
 Alternate Characters : 4
 After Result : 4321ABCD4321ABCDEF

 Given String : ABCDEFGHIJKLMO
 Alternate Characters : 2
 After Result : BACDFEGHJIKLOM
//Swift Program 
//Reverse alternate k characters in a string
class MyString
{
	//Reverse the substrings between given location
	//Returns reversal form of substring of given location
	func reverse(_ data: String, _ start: Int, _ end: Int) -> String
	{
      	var text = Array(data);
      
		if (start == end)
		{
			return "";
		}
		var result: String = "";
		//Reverse the string element from start to end location
		var i: Int = start;
		while (i <= end)
		{
			result = String(text[i]) + result;
			i += 1;
		}
		return result;
	}
	//This function is reversing alternate groups of k characters
	func reverse_alternate_char(_ data: String, _ k: Int) -> String
	{
		let size: Int = data.count;
      	let text = Array(data);
		if (k <= 0 || size <= 0)
		{
			return data;
		}
		//loop controlling variable [i]
		var i: Int = 0;
		//This is store the resultant result
		var result: String = "";
		//This is used to detect reversal location
		var counter: Int = 0;
		print("\n Given String : ", data );
		//Loop iterating string elements
		while (i < size)
		{
			//Condition which is check valid reverse k characters elements
			if (counter == 0 && i <= size - k)
			{
				result += self.reverse(data, i, i + (k - 1));
				counter = k;
				//Skip group of k-1 characters
				i = i + (k - 1);
			}
			else
			{
				counter -= 1;
				result += String(text[i]);
			}
			i += 1;
		}
		print(" Alternate Characters : ", k );
		return result;
	}
}
func main()
{
	let obj: MyString = MyString();
	var text: String = "123ABC567EFG";
	text = obj.reverse_alternate_char(text, 3);
	print(" After Result : ", text );
	text = "12345ABCDE678";
	text = obj.reverse_alternate_char(text, 5);
	print(" After Result : ", text );
	text = "1234ABCD1234ABCDEF";
	text = obj.reverse_alternate_char(text, 4);
	print(" After Result : ", text );
	text = "ABCDEFGHIJKLMO";
	text = obj.reverse_alternate_char(text, 2);
	print(" After Result : ", text );
}
main();

Output

 Given String :  123ABC567EFG
 Alternate Characters :  3
 After Result :  321ABC765EFG

 Given String :  12345ABCDE678
 Alternate Characters :  5
 After Result :  54321ABCDE678

 Given String :  1234ABCD1234ABCDEF
 Alternate Characters :  4
 After Result :  4321ABCD4321ABCDEF

 Given String :  ABCDEFGHIJKLMO
 Alternate Characters :  2
 After Result :  BACDFEGHJIKLOM




Comment

Please share your knowledge to improve code and content standard. Also submit your doubts, and test case. We improve by your feedback. We will try to resolve your query as soon as possible.

New Comment