Convert the number from International system to Indian system

Given a 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 follow 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 follow 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:

  1. Remove all the separators(, ) from the string.
  2. Reverse the string.
  3. Process the string and put a separator(, ) after third number.
  4. Now put a separator(, ) after every second number. This converts the number into the Indian Numeric System.
  5. Reverse the string again and print it.

Below is the implementation of the above approach:

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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);
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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

chevron_right


Output:

12, 34, 56, 789
90, 05, 00, 00, 000

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.




My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.



Improved By : offbeat