我是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) 给定字符串生成短语变位词的有效方法是什么?
我试图解决的问题
假设您有一个包含n 个单词的单词列表。给定一个输入字符串,比如“花生酱”,生成所有短语字谜。一些竞争者是:豌豆坚果酱、A But Ten Erupt 等。
我的解决方案
我有一个包含给定单词列表中所有单词的尝试。给定一个输入字符串,我计算它的所有排列。对于每个排列,我都有一个递归解决方案(类似这样)来确定该特定排列的字符串是否可以分解为单词。例如,如果花生酱的排列之一是“abuttenerupt”,我用这种方法将其分解为“a buttenterupt”。我使用trie 来确定一个字符串是否是一个有效的词。
什么糟透了
我的问题是,因为我计算了所有排列,所以对于长度超过 10 个字符的短语,我的解决方案运行速度非常慢,这是一个很大的失望。我想知道是否有办法以不同的方式做到这一点。像https://wordsmith.org/anagram/这样的网站可以在不到一秒钟的时间内完成这项工作,我很想知道他们是如何做到的。