Convert the number from International system to Indian system
Given string str which represents a number with separators(, ) in the International number system, the task is to convert this string representation into the Indian Numeric System.
Examples:
Input: str = “123, 456, 789”
Output: 12, 34, 56, 789
Explanation:
The given string represents a number in the international system. It is converted to the Indian system.
Input: str = “90, 050, 000, 000”
Output: 90, 05, 00, 00, 000
International Numeric System: The International numbering system is used outside the Indian subcontinent to express large numbers. It follows the following schema:
Number | Applying separators | In words |
---|---|---|
1 | 1 | One |
10 | 10 | Ten |
100 | 100 | One hundred |
1000 | 1, 000 | One thousand |
10000 | 10, 000 | Ten thousand |
100000 | 100, 000 | One hundred thousand |
1000000 | 1, 000, 000 | One million |
10000000 | 10, 000, 000 | Ten million |
100000000 | 100, 000, 000 | One hundred million |
1000000000 | 1, 000, 000, 000 | One billion |
Indian Numeric System: The Indian numbering system is used in the Indian subcontinent to express large numbers. It follows the following schema:
Number | Applying separators | In words |
---|---|---|
1 | 1 | One |
10 | 10 | Ten |
100 | 100 | One hundred |
1000 | 1, 000 | One thousand |
10000 | 10, 000 | Ten thousand |
100000 | 1, 00, 000 | One lakh |
1000000 | 10, 00, 000 | Ten lakh |
10000000 | 1, 00, 00, 000 | One crore |
100000000 | 10, 00, 00, 000 | Ten crore |
1000000000 | 100, 00, 00, 000 | One hundred crore |
Approach: From the above representations, the idea is to first obtain the number without any separators. Therefore:
- Remove all the separators(, ) from the string.
- Reverse the string.
- Process the string and put a separator(, ) after the third number.
- Now put a separator(, ) after every second number. This converts the number into the Indian Numeric System.
- Reverse the string again and print it.
Below is the implementation of the above approach:
C++
// C++ program to convert the number // from International system // to Indian system #include <bits/stdc++.h> using namespace std; // Function to convert a number represented // in International numeric system to // Indian numeric system. string convert(string input) { // Find the length of the // input string int len = input.length(); // Removing all the separators(, ) // from the input string for ( int i = 0; i < len;) { if (input[i] == ', ' ) { input.erase(input.begin() + i); len--; i--; } else if (input[i] == ' ' ) { input.erase(input.begin() + i); len--; i--; } else { i++; } } // Reverse the input string reverse(input.begin(), input.end()); // Declaring the output string string output; // Process the input string for ( int i = 0; i < len; i++) { // Add a separator(, ) after the // third number if (i == 2) { output += input[i]; output += ", " ; } // Then add a separator(, ) after // every second number else if (i > 2 && i % 2 == 0 && i + 1 < len) { output += input[i]; output += ", " ; } else { output += input[i]; } } // Reverse the output string reverse(output.begin(), output.end()); // Return the output string back // to the main function return output; } // Driver code int main() { string input1 = "123, 456, 789" ; string input2 = "90, 050, 000, 000" ; cout << convert(input1) << endl; cout << convert(input2); } |
Java
// Java program to convert the number // from International system // to Indian system import java.util.*; class GFG{ // Function to convert a number represented // in International numeric system to // Indian numeric system. static String convert(String input) { StringBuilder sbInput = new StringBuilder(input); // Find the length of the // sbInput int len = sbInput.length(); // Removing all the separators(, ) // from the sbInput for ( int i = 0 ; i < len;) { if (sbInput.charAt(i) == ',' ) { sbInput.deleteCharAt(i); len--; i--; } else if (sbInput.charAt(i) == ' ' ) { sbInput.deleteCharAt(i); len--; i--; } else { i++; } } // Reverse the sbInput StringBuilder sbInputReverse = sbInput.reverse(); // Declaring the output StringBuilder output = new StringBuilder(); // Process the sbInput for ( int i = 0 ; i < len; i++) { // Add a separator(, ) after the // third number if (i == 2 ) { output.append(sbInputReverse.charAt(i)); output.append( " ," ); } // Then add a separator(, ) after // every second number else if (i > 2 && i % 2 == 0 && i + 1 < len) { output.append(sbInputReverse.charAt(i)); output.append( " ," ); } else { output.append(sbInputReverse.charAt(i)); } } // Reverse the output StringBuilder reverseOutput = output.reverse(); // Return the output string back // to the main function return reverseOutput.toString(); } // Driver code public static void main(String[] args) { String input1 = "123, 456, 789" ; String input2 = "90, 050, 000, 000" ; System.out.println(convert(input1)); System.out.println(convert(input2)); } } // This code is contributed by offbeat |
Python3
# Python3 program to convert # the number from International # system to Indian system # Function to convert a number # represented in International # numeric system to Indian numeric # system. def convert( input ): # Find the length of the # input string Len = len ( input ) # Removing all the separators(, ) # from the input string i = 0 while (i < Len ): if ( input [i] = = "," ): input = input [:i] + input [i + 1 :] Len - = 1 i - = 1 elif ( input [i] = = " " ): input = input [:i] + input [i + 1 :] Len - = 1 i - = 1 else : i + = 1 # Reverse the input string input = input [:: - 1 ] # Declaring the output string output = "" # Process the input string for i in range ( Len ): # Add a separator(, ) after the # third number if (i = = 2 ): output + = input [i] output + = " ," # Then add a separator(, ) after # every second number elif (i > 2 and i % 2 = = 0 and i + 1 < Len ): output + = input [i] output + = " ," else : output + = input [i] # Reverse the output string output = output[:: - 1 ] # Return the output string back # to the main function return output # Driver code input1 = "123, 456, 789" input2 = "90, 050, 000, 000" print (convert(input1)) print (convert(input2)) # This code is contributed by avanitrachhadiya2155 |
C#
// C# program to convert the number // from International system // to Indian system using System; using System.Linq; using System.Text; using System.Collections.Generic; class GFG { // Function to convert a number represented // in International numeric system to // Indian numeric system. static string convert( string input) { StringBuilder sbInput = new StringBuilder(input); // Find the length of the // sbInput int len = sbInput.Length; // Removing all the separators(, ) // from the sbInput for ( int i = 0; i < len;) { if (sbInput[i] == ',' ) { sbInput.Remove(i, 1); len--; i--; } else if (sbInput[i] == ' ' ) { sbInput.Remove(i, 1); len--; i--; } else { i++; } } // Reverse the sbInput StringBuilder sbInputReverse = new StringBuilder(); string st1 = new string ( sbInput.ToString().Reverse().ToArray()); sbInputReverse.Append(st1); // Declaring the output StringBuilder output = new StringBuilder(); // Process the sbInput for ( int i = 0; i < len; i++) { // Add a separator(, ) after the // third number if (i == 2) { output.Append(sbInputReverse[i]); output.Append( " ," ); } // Then add a separator(, ) after // every second number else if (i > 2 && i % 2 == 0 && i + 1 < len) { output.Append(sbInputReverse[i]); output.Append( " ," ); } else { output.Append(sbInputReverse[i]); } } // Reverse the output StringBuilder reverseOutput = new StringBuilder(); st1 = new string ( output.ToString().Reverse().ToArray()); reverseOutput.Append(st1); // Return the output string back // to the main function return reverseOutput.ToString(); } // Driver code public static void Main( string [] args) { string input1 = "123, 456, 789" ; string input2 = "90, 050, 000, 000" ; Console.WriteLine(convert(input1)); Console.WriteLine(convert(input2)); } } // This code is contributed by phasing17 |
Javascript
<script> // JavaScript program to convert the number // from International system // to Indian system // Function to convert a number represented // in International numeric system to // Indian numeric system. function convert(input) { // Find the length of the // input string let len = input.length; // Removing all the separators(, ) // from the input string for (let i = 0; i < len;) { if (input[i] == ',' ) { input = input.substring(0,i) + input.substring(i+1,); len--; i--; } else if (input[i] == ' ' ) { input = input.substring(0,i) + input.substring(i+1,); len--; i--; } else { i++; } } // Reverse the input string input = input.split( "" ).reverse().join( "" ); // Declaring the output string let output = "" ; // Process the input string for (let i = 0; i < len; i++) { // Add a separator(, ) after the // third number if (i == 2) { output += input[i]; output += " ," ; } // Then add a separator(, ) after // every second number else if (i > 2 && i % 2 == 0 && i + 1 < len) { output += input[i]; output += " ," ; } else { output += input[i]; } } // Reverse the output string output = output.split( "" ).reverse().join( "" ); // Return the output string back // to the main function return output; } // Driver code let input1 = "123, 456, 789" ; let input2 = "90, 050, 000, 000" ; document.write(convert(input1), "</br>" ); document.write(convert(input2), "</br>" ); // This code is contributed by shinjanpatra </script> |
12, 34, 56, 789 90, 05, 00, 00, 000
Time Complexity: O(n2)
Auxiliary Space: O(1)
Please Login to comment...