gpt4 book ai didi

c++ - 如何以高效快捷的方式为数字添加前缀和删除?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:29:02 26 4
gpt4 key购买 nike

如何高效快捷地为数字添加前缀和删除前缀? (数字可以有任意位数,数字没有限制)我有一个号码,例如 122121,我想在开头添加数字 9 为 9122121,之后我需要删除号码中的第一个数字。我已经分成 vector ,推前数字(在本例中为 9)和从数字创建数字(迭代乘以 10)。有没有更有效的方法?

最佳答案

如果你想要效率,除了数字,不要使用任何其他东西,不要使用 vector ,字符串等。在你的情况下:

#include <iostream>

unsigned long long add_prefix( unsigned long long number, unsigned prefix )
{
// if you want the example marked (X) below to print "9", add this line:
if( number == 0 ) return prefix;

// without the above, the result of (X) would be "90"

unsigned long long tmp = ( number >= 100000 ) ? 1000000 : 10;
while( number >= tmp ) tmp *= 10;
return number + prefix * tmp;
}

int main()
{
std::cout << add_prefix( 122121, 9 ) << std::endl; // prints 9122121
std::cout << add_prefix( 122121, 987 ) << std::endl; // prints 987122121
std::cout << add_prefix( 1, 9 ) << std::endl; // prints 91
std::cout << add_prefix( 0, 9 ) << std::endl; // (X) prints 9 or 90
}

但要注意溢出。在没有溢出的情况下,以上内容甚至适用于多位前缀。希望你能想出逆向算法去掉前缀。


已编辑: 正如 Andy Prowl 指出的那样,可以将 0 解释为“无数字”,因此前缀后应该跟数字 0。但我猜这取决于 OP 用例,因此我相应地编辑了代码。

关于c++ - 如何以高效快捷的方式为数字添加前缀和删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15691253/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com