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

📅  最后修改于: 2021-04-28 18:03:26             🧑  作者: 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