给定字符串str ,该字符串在国际号码系统中代表带分隔符的数字,任务是将该字符串表示形式转换为印度数字系统。
例子:
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
国际数字系统:国际编号系统在印度次大陆之外用于表示大数字。它遵循以下架构:
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 |
方法:从以上表示中,想法是首先获取没有任何分隔符的数字。所以:
- 从字符串删除所有的分隔符(,)。
- 反转字符串。
- 处理字符串,并在第三个数字后放置一个分隔符(,)。
- 现在,在每个第二个数字后放置一个分隔符(,)。这会将数字转换为印度数字系统。
- 再次反转字符串并打印。
下面是上述方法的实现:
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