Given a string S, the task is to move all the digits present in the string, to the beginning of the string.
Examples:
Input: S = “Geeks4forGeeks123”
Output: 4123GeeksforGeeks
Explanation:
The given string contains digits 4, 1, 2, and 3. Moving all the digits to the beginning of the string modifies the string to “4123GeeksforGeeks”.Input: S = “GeeksforGeeks1234 A Com56puter Science Port7al”
Output: 1234567GeeksforGeeks A Computer Science Portal
Approach: The idea is to traverse the string and maintain two strings, one string contains the digits and another string contains non-numeric characters. In the end, append both the strings to the result in the required order.
Below is the implementation of the above approach:
Java
// Java program for the above approach class GFG { // Function to move all the digit // to the beginning of the string static void moveAllDigitAtBeginning( String str) { // Calculate the string length int len = str.length(); // Stores the digits StringBuilder digits = new StringBuilder(); // Stores the non-numeric character StringBuilder nonNumericCharacter = new StringBuilder(); // Traverse the string and // check if there is a digit for ( char c : str.toCharArray()) { // If character is a digit, // add it to the string digits if (c >= 48 && c <= 57 ) { digits.append(c); } // Otherwise, add it to the // string nonNumericCharacter else { nonNumericCharacter.append(c); } } // Append both the strings digits.append( nonNumericCharacter.toString()); // Print the string System.out.print( digits.toString() + " " ); } // Driver Code public static void main(String args[]) { // Given String str String str = "GeeksforGeeks123" ; moveAllDigitAtBeginning(str); } } |
123GeeksforGeeks
Time Complexity: O(N)
Auxiliary Space: O(1)
Regular Expression based Approach: The given problem can also be solved using Regular Expression and replace all non-numeric characters with the empty string (“ “) that give you all numbers and replace all digits with the empty string (“ “) that gives you all non-numeric characters. In the end, concatenate the string and print the result.
Below is the implementation of the above approach:
Java
// Java program for the above approach class GFG { // Function to move all the digit // at the beginning of the string static void moveAllDigitAtBeginning( String str) { // Replace all the non-numeric // characters with " " and // replace all digits with " " String moveAllDigit = str.replaceAll( "\\D+" , "" ) + str.replaceAll( "\\d+" , "" ); // Print the string System.out.println(moveAllDigit); } // Driver Code public static void main(String args[]) { // Given String str String str = "GeeksforGeeks1234" ; moveAllDigitAtBeginning(str); } } |
C#
// C# program for the above approach using System; using System.Text.RegularExpressions; public class GFG { // Function to move all the digit // at the beginning of the string static void moveAllDigitAtBeginning( String str) { // Replace all the non-numeric // characters with " " and // replace all digits with " " String moveAllDigit = Regex.Replace(str, "\\D+" , "" ) +Regex.Replace(str, "\\d" , "" ); // Print the string Console.WriteLine(moveAllDigit); } // Driver Code public static void Main(String []args) { // Given String str String str = "GeeksforGeeks1234" ; moveAllDigitAtBeginning(str); } } // This code is contributed by 29AjayKumar |
1234GeeksforGeeks
Time Complexity: O(N)
Auxiliary Space: O(1)
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.