如何连接整数。就像,让我们说我做了一个这样简单的程序:
int concatenate(int i, int j) {
}
我给了那个函数两个整数。 i
为1,j
为9.我如何能够连接数字,以便获得123456789
?
答案 0 :(得分:1)
试试这个:
int concatenate(int i, int j) {
int result = 0;
for (int x = i; x <= j; x++) {
result = result * 10 + x;
}
return result;
}
答案 1 :(得分:0)
#include <string>
int concatenate(int i, int j) {
std::string result = "";
for (; i <= j; ++i)
result += std::to_string(i);
return std::stoi(result);
}
但它可能很容易溢出。尝试将返回类型更改为long
或更高。然后,std::stol
会很有用。
答案 2 :(得分:0)
如果您将i
和j
限制为域[0,9],那么10x10查找表将是一个高性能解决方案:
long concatenate_lookup[10][10] = {
{ 0L, 1L, 12L, 123L, 1234L, 12345L, 123456L, 1234567L, 12345678L, 123456789L},
{ 10L, 1L, 12L, 123L, 1234L, 12345L, 123456L, 1234567L, 12345678L, 123456789L},
{ 210L, 21L, 2L, 23L, 234L, 2345L, 23456L, 234567L, 2345678L, 23456789L},
{ 3210L, 321L, 32L, 3L, 34L, 345L, 3456L, 34567L, 345678L, 3456789L},
{ 43210L, 4321L, 432L, 43L, 4L, 45L, 456L, 4567L, 45678L, 456789L},
{ 543210L, 54321L, 5432L, 543L, 54L, 5L, 56L, 567L, 5678L, 56789L},
{ 6543210L, 654321L, 65432L, 6543L, 654L, 65L, 6L, 67L, 678L, 6789L},
{ 76543210L, 7654321L, 765432L, 76543L, 7654L, 765L, 76L, 7L, 78L, 789L},
{ 876543210L, 87654321L, 8765432L, 876543L, 87654L, 8765L, 876L, 87L, 8L, 89L},
{9876543210L, 987654321L, 98765432L, 9876543L, 987654L, 98765L, 9876L, 987L, 98L, 9L}
};
long concatenate(long i, long j ) {
assert(i>=0 && i<=9 && j>=0 && j<=9);
return concatenate_lookup[i][j];
} // end concatenate()
必须使用long
代替int
来处理所有可能的输出。