小编Rav*_*avi的帖子

Java:多线程和UDP套接字编程

我是Java中多线程和套接字编程的新手.我想知道实现2个线程的最佳方法是什么 - 一个用于接收套接字,另一个用于发送套接字.如果我想做的事听起来很荒谬,请告诉我原因!该代码很大程度上受到Sun在线教程的启发.我想使用多播套接字,以便我可以使用多播组.

class Server extends Thread
{

    static protected MulticastSocket socket = null;
    protected BufferedReader in = null;
    public InetAddress group;

    private static class Receive implements Runnable
    {

        public void run()
        {
            try
            {
                byte[] buf = new byte[256];
                DatagramPacket pkt = new DatagramPacket(buf,buf.length);
                socket.receive(pkt);
                String received = new String(pkt.getData(),0,pkt.getLength());
                System.out.println("From server@" + received);          
                Thread.sleep(1000);
            }
            catch (IOException e)
            { 
                System.out.println("Error:"+e);
            }   
            catch (InterruptedException e)
            { 
                System.out.println("Error:"+e);
            }   

        }

    }


    public Server() throws IOException
    {
        super("server");
        socket = new …
Run Code Online (Sandbox Code Playgroud)

java sockets multithreading udp

4
推荐指数
1
解决办法
3万
查看次数

短语字谜的高效算法

给定字符串生成短语变位词的有效方法是什么?

我试图解决的问题

假设您有一个包含n 个单词的单词列表。给定一个输入字符串,比如“花生酱”,生成所有短语字谜。一些竞争者是:豌豆坚果酱、A But Ten Erupt 等。

我的解决方案

我有一个包含给定单词列表中所有单词的尝试。给定一个输入字符串,我计算它的所有排列。对于每个排列,我都有一个递归解决方案(类似这样)来确定该特定排列的字符串是否可以分解为单词。例如,如果花生酱的排列之一是“abuttenerupt”,我用这种方法将其分解为“a buttenterupt”。我使用trie 来确定一个字符串是否是一个有效的词。

什么糟透了

我的问题是,因为我计算了所有排列,所以对于长度超过 10 个字符的短语,我的解决方案运行速度非常慢,这是一个很大的失望。我想知道是否有办法以不同的方式做到这一点。像https://wordsmith.org/anagram/这样的网站可以在不到一秒钟的时间内完成这项工作,我很想知道他们是如何做到的。

string algorithm anagram

3
推荐指数
1
解决办法
1361
查看次数

标签 统计

algorithm ×1

anagram ×1

java ×1

multithreading ×1

sockets ×1

string ×1

udp ×1