我正在尝试为比 long long 更大的非常大的整数编写这个自定义加法类。我正在研究的一种方法是将整数保留为字符串,然后将字符转换为它们的 int 组件,然后添加每个“列”。我正在考虑的另一种方法是将字符串拆分为多个字符串,每个字符串都是 long long 的大小,然后使用字符串流将其转换为 long long 添加然后重新组合。
无论如何,我发现加法最容易反向完成以允许结转数字这一事实。在这种情况下,我想知道字符串插入方法的效率。似乎因为一个字符串是一个字符数组,所以所有的字符都必须移动一个。所以它会有所不同,但效率似乎是 O(n),其中 n 是字符串中的字符数。
这是正确的,还是只是天真的解释?
编辑:我现在对我的问题有了答案,但我想知道一个更有效的相关主题,将字符串插入流然后提取到 int。或者做 10^n*char1+10^n-1*char2...等等?
最佳答案
据我所知,你是对的。 String 的 C++ 实现将在 O(n) 时间内执行插入。它将字符串视为字符数组。
对于您的数字实现,为什么不将数字存储为整数数组并仅转换为字符串以供输出?
关于c++ - insert in string的效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8785205/