相关疑难解决方法(0)

查找给定单词的字谜

如果其中一个字符与另一个字的字符完全相同,则两个字是字谜.

示例:Anagram&Nagaram是anagrams(不区分大小写).

现在有很多类似的问题.找出两个字符串是否为字谜的几种方法是:

1) Sort字符串并比较它们.

2)frequency map为这些字符串创建一个并检查它们是否相同.

但是在这种情况下,我们会给出一个词(为了简单起见,我们只假设一个单词,它只有单个单词anagrams),我们需要找到它的字谜.

我想到的解决方案是,我们可以为单词生成所有排列并检查字典中存在哪些单词 .但显然,这是非常低效的.是的,字典也可用.

那么我们有什么替代方案呢?

我也在一个类似的线程中读到可以使用的东西,Tries但是这个人没有解释算法是什么,为什么我们首先使用Trie,只是在Python或Ruby中提供了一个实现.所以这并不是真的有用,这就是我创建这个新线程的原因.如果有人想要分享他们的实现(除了C,C++或Java),那么也要解释它.

language-agnostic algorithm anagram data-structures

39
推荐指数
2
解决办法
6万
查看次数

增量读取大文件的最快方法

当给出MAX_BUFFER_SIZE的缓冲区和远远超过它的文件时,如何:

  1. 以MAX_BUFFER_SIZE块的形式读取文件?
  2. 尽可能快地做到

我尝试过使用NIO

    RandomAccessFile aFile = new RandomAccessFile(fileName, "r");
    FileChannel inChannel = aFile.getChannel();

    ByteBuffer buffer = ByteBuffer.allocate(CAPARICY);

    int bytesRead = inChannel.read(buffer);

    buffer.flip();

        while (buffer.hasRemaining()) {
            buffer.get();
        }

        buffer.clear();
        bytesRead = inChannel.read(buffer);

    aFile.close();
Run Code Online (Sandbox Code Playgroud)

和常规IO

    InputStream in = new FileInputStream(fileName);

    long length = fileName.length();

    if (length > Integer.MAX_VALUE) {
        throw new IOException("File is too large!");
    }

    byte[] bytes = new byte[(int) length];

    int offset = 0;

    int numRead = 0;

    while (offset < bytes.length
            && (numRead = in.read(bytes, offset, bytes.length - …
Run Code Online (Sandbox Code Playgroud)

java file-io nio

19
推荐指数
2
解决办法
4万
查看次数