连接整数

时间:2016-05-31 02:56:34

标签: c++

如何连接整数。就像,让我们说我做了一个这样简单的程序:

int concatenate(int i, int j) {

}

我给了那个函数两个整数。 i为1,j为9.我如何能够连接数字,以便获得123456789

3 个答案:

答案 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)

使用std::to_string

的另一种方法
#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)

如果您将ij限制为域[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来处理所有可能的输出。