`

DropBox Interview - Same file in a directory

 
阅读更多

DropBox interview questions:

Get all files that have the same content in a directory.

bool isDir(const char* path) {
    struct stat st;
    lstat(path, &st);
    return 0 != S_ISDIR(st.st_mode);
}
 
uint64_t getHash(string& path) {
    FILE *fp = fopen(path.c_str(), "r");
    if (fp == NULL) {
        cerr << " Can not open the file " << path << endl;
        return 0;
    }
    uint64_t hash_key = 0;
    char c;
    while (fread(&c, 1, 1, fp) == 1) {
        hash_key = hashFunc(hash_key, c);
    }
    fclose(fp);
    return hash_key;
}
 
void getSimilarFiles(string& path, unordered_map<uint64_t, vector<string> >& hash) {
    DIR* dirFile = opendir(path.c_str());
    if (dirFile == NULL)    return;
    struct dirent* hFile;
    while ((hFile = readdir(dirFile)) != NULL) {
        if (!strcmp(hFile->d_name, ".")) continue;
        if (!strcmp(hFile->d_name, ".."))    continue;
        string srcPath(path);
        srcPath.append("/");
        srcPath.append(hFile->d_name);
        if (isDir(srcPath.c_str())) {
            getSimilarFiles(srcPath, hash);
        } else {
            uint64_t hashValue = getHash(srcPath);
            if (hashValue) {
                hash[hashValue].push_back(srcPath);
            }
        }
    }
}
 
void printHash(unordered_map<uint64_t, vector<string> >& hash) {
    unordered_map<uint64_t, vector<string> >::iterator it = hash.begin();
    for (; it != hash.end(); it++) {
        if (it->second.size() <= 1) {
            continue;
        }
        cout << "=========the files below are the same" << endl;
        for (int i = 0; i < it->second.size(); i++) {
            cout << (it->second)[i] << endl;
        }
    }
}
 
void getFileSet(const char* pathInput) {
    unordered_map<uint64_t, vector<string> > hash;
    string path(pathInput);
    getSimilarFiles(path, hash);
    printHash(hash);
}

 

From:

https://linzhongzl.wordpress.com/2014/10/29/same-file/ 

分享到:
评论

相关推荐

    Android代码-dropbox-sdk-java

    Dropbox Core SDK for Java 6 ... dropbox-core-sdk 3.0.11 If you are using Gradle, then edit your project's "build.gradle" and add this to the dependencies section: dependencies { //

    dropbox-sdk-java,一个用于Dropbox核心API的Java库。.zip

    **dropbox-sdk-java** 是一个专门为Java开发者设计的开源库,它使得与Dropbox的核心API进行交互变得简单而直观。这个库提供了全面的功能,包括文件上传、下载、管理,以及目录操作,同步,权限控制等,使开发人员...

    dropbox-android-sdk-1.6.3

    本文将深入探讨"dropbox-android-sdk-1.6.3"这个版本,帮助开发者理解和运用这一强大的云存储解决方案。 首先,我们要明确的是,"dropbox-android-sdk-1.6.3"是Dropbox针对Android平台提供的一个软件开发工具包...

    dropbox 2011-12-13最新客户端

    dropbox 2011-12-13最新Windows客户端,安装即可使用

    Laravel开发-laravel-dropbox-driver

    `laravel-dropbox-driver`是将这两者结合的工具,使开发者能够利用Dropbox的服务来存储应用程序的数据。 首先,我们需要了解Laravel的文件存储系统。Laravel提供了多种存储驱动,包括本地、FTP、S3等,而`laravel-...

    Laravel开发-laravel-dropbox-storage-driver

    总之,通过集成`laravel-dropbox-storage-driver`,Laravel项目可以无缝地与Dropbox进行交互,提供灵活的云存储解决方案。这个驱动使得开发者能够轻松地处理文件上传、下载,同时利用Dropbox的可靠性和可扩展性。在...

    dropbox-mysql-backup-源码.rar

    本篇文章将详细解析一个名为“dropbox-mysql-backup-源码”的项目,它是一个利用Dropbox作为存储媒介的MySQL数据库备份解决方案。通过理解并应用这个源码,我们可以实现自动化、可靠的MySQL数据库备份,并将其安全地...

    dropbox-datastores-js

    《深入理解Dropbox-datastores-js:JavaScript SDK的克隆与应用》 在现代Web开发中,数据存储和同步是至关重要的环节。Dropbox-datastores-js是Dropbox为开发者提供的一款JavaScript SDK,它允许用户在Dropbox云...

    PyPI 官网下载 | dropbox-5.2-py3-none-any.whl

    在PyPI上,我们可以找到各种功能强大的Python库,其中就包括了我们今天要讨论的"dropbox-5.2-py3-none-any.whl"。 "dropbox-5.2-py3-none-any.whl"是Dropbox官方发布的Python库的二进制版本,用于与Dropbox云存储...

    Laravel开发-dropbox

    Dropbox::upload('path/to/local/file', '/path/in/dropbox'); ``` 或者下载文件: ```php $contents = Dropbox::download('/path/in/dropbox'); file_put_contents('path/to/local/file', $contents); ``` 还...

    dropbox-sdk-js:Java版官方Dropbox API V2 SDK

    可以在上文档安装通过创建应用通过安装$ npm install --save dropbox从源安装: $ git clone https://github.com/dropbox/dropbox-sdk-js.git$ cd dropbox-sdk-js$ npm install安装后,请遵循我们的或阅读。...

    leetcode题库-Dropbox-Interview-Prep:Dropbox面试的准备材料

    leetcode题库Dropbox 现场面试 Dropbox 现场面试指南! Dropbox 面试题库非常小。 银行在中文论坛上已经有很多年了,我们希望让每个人都可以访问它,以便每个人都有平等的机会准备Dropbox现场面试! 备份链接: 行为...

    dropbox的android开发包及文档

    这份"dropbox-android-sdk-1.5.3"压缩包包含了Android版Dropbox SDK的源代码和相关的开发文档,帮助开发者快速地将Dropbox的功能整合进Android应用。 1. **Dropbox Android SDK**:这是Dropbox为Android平台提供的...

    IOS应用源码Demo-录音笔记for ipad(录完上传到dropbox)-毕设学习.zip

    该压缩包文件“IOS应用源码Demo-录音笔记for ipad(录完上传到dropbox)-毕设学习.zip”提供了一个iOS应用的源代码示例,特别适合那些正在进行毕业设计或者想深入理解iOS应用程序开发的学生。这个应用的核心功能是...

    Python库 | dropbox-5.2.1-py3-none-any.whl

    首先,我们关注的核心文件是"dropbox-5.2.1-py3-none-any.whl",这是一个Python的 wheel 包格式,它是预编译的Python库,用于简化安装过程。Wheel包是Python社区为了提高分发和安装效率而推出的一种二进制格式,它...

    PyPI 官网下载 | dropbox-5.2.1-py3-none-any.whl

    资源来自pypi官网。 资源全名:dropbox-5.2.1-py3-none-any.whl

    dropbox-sdk-go-unofficial, Go的非官方 Dropbox SDK.zip

    dropbox-sdk-go-unofficial, Go的非官方 Dropbox SDK 面向 [UNOFFICIAL] 的 Dropbox 用于与Dropbox集成的非官方 go 。 使用 go 1.5 测试这菊花什么意思这里没有正式的Dropbox支持Bug 可能也可能无法修复并非所有的...

    Dropbox-Interview-Prep:Dropbox采访的准备材料

    Dropbox现场采访 Dropbox现场采访指南! Dropbox面试问题库很小。 该银行已经在中国论坛上存在很多年了,我们希望所有人都能使用它,以便每个人都有平等的机会准备Dropbox现场采访! 备用链接: : : 行为问题:...

Global site tag (gtag.js) - Google Analytics