草庐IT

algorithm

全部标签

java - 如何可靠地检测文件类型?

这个问题在这里已经有了答案:Howtogetafile'sMediaType(MIMEtype)?(27个答案)关闭去年。目标:给定文件,确定它是否属于给定类型(XML、JSON、属性等)考虑XML的情况-在我们遇到这个问题之前,以下示例方法运行良好:try{saxReader.read(f);}catch(DocumentExceptione){logger.warn("-FileisnotXML:"+e.getMessage());returnfalse;}returntrue;正如预期的那样,当XML格式正确时,测试将通过并且方法将返回true。如果发生错误,无法解析文件,则返回

java - 查找字典单词的变位词

如何获取一个输入词(或字母序列)并从字典中输出一个恰好包含这些字母的词?java是否有我可以使用的英语词典类(单词列表),或者是否有它的开源实现?如果需要重复执行此操作,我该如何优化我的代码? 最佳答案 将您的字典转换为anagramdictionary.在字谜词典中,单词按字母顺序按字母顺序索引。要查找特定单词的变位词,您可以对其字母进行排序并从变位词词典中查找相应的字母。 关于java-查找字典单词的变位词,我们在StackOverflow上找到一个类似的问题:

java - 使用 minimax 的 tic-tac-toe 可以使用多少个线程?

让我们以5x5井字游戏为例。假设轮到我的AI了。然后,我走25步(基本上每个单元格,当然,如果它是合法的移动),为每个Action创建一个线程(总共(最多)25个线程),对每一步都调用一个minimax函数,然后当所有结果都来自每个线程时,比较得分并选择得分最高的着法。这是我的问题:使用25个线程是否高效?使用25个线程意味着什么?它是否快了25倍(很可能不是)?它取决于什么?当然是在计算机上,但是我如何根据计算机的资源知道可以使用多少线程呢?如果我使用太多线程会怎样(我猜没什么……)?我的想法好吗?谢谢。 最佳答案 对于典型的计算

java - 查找数组中单词之间的最小距离

Example:WordDistanceFinderfinder=newWordDistanceFinder(Arrays.asList("the","quick","brown","fox","quick"));assert(finder.distance("fox","the")==3);assert(finder.distance("quick","fox")==1);我有以下解决方案,看起来是O(n),但我不确定是否有更好的解决方案。有人知道吗?StringtargetString="fox";StringtargetString2="the";doubleminDistanc

java - 使用 hashmap 改进词频计数

对于我的一个应用程序,必须经常调用以下函数。此功能占用大量CPU,因此我想知道您是否知道如何提高性能。该代码计算四个字符组合的出现次数。测试时发现map中的条目数在100左右。文本长度在100到800之间。200的初始大小是猜测,代码似乎比不指定初始值运行得更快尺寸。不过,这可能不是最佳值。privateMapgetTetagramCount(finalStringtext){finalMapcipherTetagrams=newHashMap(200);for(inti=0;i 最佳答案 我在NLP和机器学习方面做了很多工作,所以

java - 如何以更优雅和可扩展的方式编写这些条件语句

在我的软件中,我需要根据2个参数来决定功能的版本。例如。Renderversion1->if(param1&¶m2)==true;Renderversion2->if(!param1&&!param2)==true;Renderversion3->ifonlyparam1==true;Renderversion4->ifonlyparam2==true;所以,为了满足这个要求,我写了一段代码,如下所示-if(param1&¶m2)//botharetrue{version=1;}elseif(!param1&&!param2)//botharefalse{version

java - 在 Java 中创建迷宫求解算法

我被分配了用Java创建迷宫解算器的任务。这是作业:Writeanapplicationthatfindsapaththroughamaze.Themazeshouldbereadfromafile.Asamplemazeisshownbelow.OOOOOXOXXOXOOXOXOOXXXXXXOOXOXXXXOOXOOOOOOOXXOXXXO字符“X”代表一堵墙或被阻挡的位置,字符“O”代表一个开仓。你可能会假设迷宫的入口总是在右下角角,导出总是在左上角。你的程序应该发送它的输出到一个文件。如果找到路径,则输出文件应包含该路径。如果路径是未找到消息应发送到文件。请注意,一个迷宫可能有

java - 对于 N 个大小相等且整数按升序排列的数组,如何选择数组共有的数字?

我今天在接受采访时被问到一个算法问题,我很想听取SO成员的意见。问题如下;给定大小相等且整数按升序排列的N个数组,您将如何选择所有N个数组共有的数字。起初我的想法是迭代从第一个数组开始的元素,逐渐向下到其余数组。但如果我是对的,那将导致N次N次迭代。所以我想出了一个解决方案,通过将元素作为键并将值作为计数器来将计数添加到map中。这样我相信时间复杂度仅为N。以下是我的方法在Java中的实现publicstaticvoidmain(String[]args){int[]arr1={1,4,6,8,11,15};int[]arr2={3,4,6,9,10,16};int[]arr3={1,

Java && ||在 RETURN 语句中?

我正在查看一些Java算法示例,我在递归方法中遇到了这段代码:booleansubTree(TreeNodet1,TreeNodet2){if(t1==null){returnfalse;}if(t1.value==t2.value){if(treeMatch(t1,t2))returntrue;;}return(subTree(t1.left,t2)||subTree(t1.right,t2));}不知道(也从未见过)||之前在return语句中使用过,更不用说递归语句了,真的让我很困惑。我将代码复制到Eclipse中以查看它是否有效。然后我更换了||与&&和Eclipse似乎并没有

java - 我需要一个遍历日期间隔的循环

我有开始日期和结束日期。我需要遍历这两个日期之间的每一天。执行此操作的最佳方法是什么?我只能建议如下:DatecurrentDate=newDate(startDate.getTime());while(true){if(currentDate.getTime()>=endDate.getTime())break;doSmth();currentDate=newDate(currentDate.getTime()+MILLIS_PER_DAY);} 最佳答案 准备运行;-)publicstaticvoidmain(String[]a