【问题标题】:What is the best way to implement a Hash rotation method in C++?在 C++ 中实现哈希旋转方法的最佳方法是什么?
【发布时间】:2016-05-05 06:05:23
【问题描述】:

我正在尝试了解哈希表和哈希方法(例如除法和乘法),并且想知道当键是串行时如何实现轮换方法。假设我有一个名为 int rotation(int value) 的函数,我有一个像 int test = 123456 这样的整数,我想得到结果 612345。什么是普遍实现它的最佳方法(假设使用 1000 个整数组的文本文件) ?

【问题讨论】:

    标签: c++ hash


    【解决方案1】:
    int rotate(int value)
    {
        bool isNegative = value < 0;
        if(isNegative)
            value = -value;
        int v = value % 10;
        value /= 10;
        while(v < value)
            v *= 10;
        value += v;
        return isNegative ? -value : value;
    }
    

    这将根据密码数轮换您的数字(123 得到 312,1234 得到 4123)。

    对于文件部分:您必须打开它,读取值,将它们转换为 int 并调用函数:

    ::std::ifstream in("filename");
    if(in.fail())
    {
        // error
    }
    else
    {
        int n;
        for(;;)
        {
            in >> n;
            if(in.eof() || in.fail())
                break;
    
            ::std::cout << rotate(n) << ::std::endl;
        }
        in.close();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-04
      • 2010-10-11
      • 2011-05-24
      • 1970-01-01
      • 2010-09-07
      • 1970-01-01
      • 2021-07-30
      • 2010-10-21
      相关资源
      最近更新 更多