📜  将数字从国际系统转换为印度系统

📅  最后修改于: 2021-09-08 12:31:02             🧑  作者: Mango

给定字符串str表示国际数字系统中带有分隔符 (, ) 的数字,任务是将此字符串表示形式转换为印度数字系统。
例子:

国际数字系统:国际数字系统在印度次大陆以外用于表示大数字。它遵循以下架构:

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

印度数字系统:印度数字系统在印度次大陆用于表示大数字。它遵循以下架构:

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

方法:从上面的表示中,想法是首先获得没有任何分隔符的数字。所以:

  1. 从字符串删除所有分隔符(, )。
  2. 反转字符串。
  3. 处理字符串并在第三个数字后放置一个分隔符(, )。
  4. 现在在每第二个数字后面放一个分隔符(, )。这会将数字转换为印度数字系统。
  5. 再次反转字符串并打印它。

下面是上述方法的实现:

C++
// C++ program to convert the number
// from International system
// to Indian system
 
#include 
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


输出:
12, 34, 56, 789
90, 05, 00, 00, 000