小编See*_*hor的帖子

检测字符串是否具有唯一字符:将我的解决方案与"破解编码面试"进行比较?

我正在阅读"破解编码面试"一书,我在这里遇到了一些问题,但是我需要帮助比较我对解决方案的回答.我的算法有效,但我很难理解书中的解决方案.主要是因为我不明白一些运营商在做什么.

任务是:"实现一个算法来确定一个字符串是否具有所有唯一字符.如果你不能使用其他数据结构怎么办?"

这是我的解决方案:

public static boolean checkForUnique(String str){
    boolean containsUnique = false;

    for(char c : str.toCharArray()){
        if(str.indexOf(c) == str.lastIndexOf(c)){
            containsUnique = true;
        } else {
            containsUnique = false;
        }
    }

    return containsUnique;
}
Run Code Online (Sandbox Code Playgroud)

它有效,但效率如何?我看到Java中String的索引函数的复杂性是O(n*m)

以下是本书的解决方案:

public static boolean isUniqueChars(String str) {
    if (str.length() > 256) {
        return false;
    }
    int checker = 0;
    for (int i = 0; i < str.length(); i++) {
        int val = str.charAt(i) - 'a';
        if ((checker & (1 << val)) > 0) return false;
        checker …
Run Code Online (Sandbox Code Playgroud)

java string algorithm big-o time-complexity

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

使用Microsoft Crypto API时如何隐藏和使用对话框(Windows证书库)

我想在我的Java应用程序中利用Windows证书库.我能够从Windows-MY加载一个具有我需要的所有别名/证书的密钥库,但在加载它时,我面临一个询问"请插入智能卡"的对话框.如果我在这几次点击取消,他们的密钥库仍然加载正确的内容.

有没有办法压制这个对话框?还有一种方法可以使用Java的Windows证书选择框吗?我在网上看到的唯一答案是:https://social.msdn.microsoft.com/Forums/en-US/52dca221-1e05-44c1-8c45-9e0d4a807853/java-keystoreload-for-windowsmy-pops- up-insert-smart-card-window?forum = windowssecurity,但我不想删除任何内容,因为我不希望用户这样做.

这是我加载密钥库的方式:

KeyStore ks = KeyStore.getInstance("Windows-MY");
ks.load(null, null);
Run Code Online (Sandbox Code Playgroud)

java windows cryptography certificate keystore

8
推荐指数
1
解决办法
258
查看次数

PHP中EBNF的递归下降解析器

我试图在PHP中为以下EBNF编写一个递归下降解析器:

EXP ::= < TERM > { ( + | - ) < TERM > }
TERM ::= < FACTOR > { ( * | / ) < FACTOR > }
FACTOR ::= ( < EXP > ) | < DIGIT >
DIGIT ::= 0 | 1 | 2 | 3
Run Code Online (Sandbox Code Playgroud)

我按照这个指南,我看到推荐的类似问题.(我发布之前搜索过)

在大多数情况下,我了解它是如何工作的,我理解语法.我认为问题在于我的语法.我是PHP的新手,所以我一直在引用W3Schools.我目前使用我的代码收到以下错误:

Warning: Wrong parameter count for exp() .... on line 101
Run Code Online (Sandbox Code Playgroud)

我试图查找这个错误并没有太多运气.我读了一些关于传入错误参数的人的帖子,但我没有为该函数设置任何参数.我有什么关于PHP的东西吗?

下面是我的代码,我认为逻辑是正确的,因为我基于语法的解析树.$ input将来自HTML页面上的表单框.当我发现PHP4没有内置时,我也从不同的帖子中获取了str_split函数.

<html>
<body>
<?php 
if(!function_exists("exp")){
  function exp(){
    term();
    while($token == "+" …
Run Code Online (Sandbox Code Playgroud)

php syntax recursion recursive-descent

6
推荐指数
1
解决办法
2383
查看次数

Jackson JSON对象映射器反序列化为LinkedHashMap而不是HashMap

我有一个有内部地图的POJO.我希望从我的JSON反序列化为HashMap,但Jackson将内部映射从JSON反序列化为LinkedHashMap.我可以通过将Map的类型从"Map"更改为"HashMap"来强制它使用HashMap,但是我想知道是否有办法告诉Jackson将其反序列化为Map的特定实现?

这是JSON:

{
    "transforms": {
        "variable_name1": [{
            "min": 100,
            "max": 200,
            "value": 0.6
        }],
        "variable_name2": [{
            "min": 100,
            "max": 200,
            "value": 0.6
        }],
        "variable_name3": [{
            "min": 100,
            "max": 200,
            "value": 0.6
        }]
    }
}
Run Code Online (Sandbox Code Playgroud)

而变形类:

public class Transformer {
    Map<String, List<Transform>> transforms;

    public Transformer() {
        transforms = new HashMap<String, List<Transform>>();
    }

    public void setTransforms(Map<String, List<Transform>> transforms) {
        this.transforms = transforms;
    }
}
Run Code Online (Sandbox Code Playgroud)

我如何使用ObjectMapper:

try(Reader reader = new InputStreamReader(TransformTester.class.getResourceAsStream("transforms.json"), "UTF-8")) {
            ObjectMapper objMapper = new ObjectMapper();
            Transformer tr = objMapper.readValue(reader, Transformer.class); …
Run Code Online (Sandbox Code Playgroud)

java serialization json jackson

6
推荐指数
1
解决办法
4473
查看次数

如何使用 Java 流根据双嵌套列表中的属性过滤集合

我正在尝试更好地理解如何使用 Java 流。我有这些课程:

public class Plan {

    List<Request> requestList;
}

public class Request {

    List<Identity> identityList;
    boolean isCancelled;

}

public class Identity {

    String idNumber;
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试编写一个方法,该方法返回包含具有匹配标识号的未取消请求的计划。

这是我尝试过的:

public static Plan findMatchingPlan(List<Plan> plans, String id) {
    List<Plan> filteredPlan = plans.stream()
            .filter(plan -> plan.getRequestList().stream()
                    .filter(request -> !request.isCancelled())
                    .filter(request -> request.getIdentityList().stream()
                        .filter(identity -> identity.getIdNumber().equals(id))))
            .collect(Collectors.toList());
}
Run Code Online (Sandbox Code Playgroud)

这给了我一个错误:

java.util.stream.Stream<com.sandbox.Identity> cannot be converted to boolean
Run Code Online (Sandbox Code Playgroud)

我有点理解为什么会出现错误。嵌套过滤器返回一个不能被评估为布尔值的过滤器。问题是,我不知道我错过了什么。

任何帮助,将不胜感激。

java collections java-stream

5
推荐指数
1
解决办法
1112
查看次数

使用 iText 2.1.7 合并大型 PDF

我正在使用旧版本的 iText (2.1.7) 来合并 PDF。因为这是我可以使用的 MPL 下的最后一个版本。我无法改变这一点。

无论如何。我正在尝试合并多个 PDF。一切似乎都正常,但是当我浏览大约 1500 页时,生成的 PDF 无法打开(表现得好像它已损坏)

这就是我的做法:

private byte[] mergePDFs(List<byte[]> pdfBytesList) throws DocumentException, IOException {
    Document document = new Document();
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    PdfCopy copy = new PdfCopy(document, outputStream);
    document.open();

    for (byte[] pdfByteArray : pdfBytesList) {
        ByteArrayInputStream readerStream = new ByteArrayInputStream(pdfByteArray);
        PdfReader reader = new PdfReader(readerStream);

        for (int i = 0; i < reader.getNumberOfPages(); ) {
            copy.addPage(copy.getImportedPage(reader, ++i));
        }

        copy.freeReader(reader);
        reader.close();
    }

    document.close();

    return outputStream.toByteArray();
}
Run Code Online (Sandbox Code Playgroud)

这是正确的方法吗?在翻阅一定数量的页面时,是否有任何关于此的提示?没有抛出异常或任何东西。

java pdf itext

5
推荐指数
1
解决办法
1148
查看次数

寻找正则表达式

我有一个关于为给定语言查找正则表达式的简单问题.

我被给予语言L,其中:

大号 = { 瓦特 ∈{0,1}*:瓦特恰好具有一对连续的零的}

我第一次尝试这是尝试L((0 + 1)*00(0 + 1)*),但我注意到问题就在于我有(0 + 1)*因为如果选择0,它可以是零多个,从而导致多对连续的零.

我也知道,我可能遇到的情况是,前面,中间和末尾有两个零.我只是不太确定如何为此创建正则表达式.

任何帮助深表感谢.

regex theory

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

C问题中的条件运算符

我只是对条件运算符有一个快速的问题.这里还是一个崭露头角的程序员.给出x = 1,y = 2,z = 3.

我想知道,为什么在这个声明之后:

y += x-- ? z++ : --z;
Run Code Online (Sandbox Code Playgroud)

y是5.语句后面的值是x = 0,y = 5,z = 4.我知道条件运算符的工作方式是它的格式如下:variable = condition?值为true:如果为false则为value.

对于条件,y + = x--,y如何变为5?我只能看到2(2 + = 0)和3(2 + = 1)(然后x--变为零)作为可能性.任何帮助深表感谢.:)

c conditional ternary-operator operator-keyword

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

在给定任何常规语言L的情况下,展示一种确定L = L*的算法

我正在研究会员算法,我正在研究这个特殊问题,其中说明如下:

展示一种算法,给定任何常规语言L,确定L = L*

所以,我的第一个想法是,我们有L*是L的Kleene星并且确定L = L*,我们不能只是说因为L是常规的,我们知道L*是根据定义指出的常规语言系列在星光关闭下关闭.因此L总是等于L*?

我觉得肯定还有很多东西,可能还有我想念的东西.任何帮助,将不胜感激.再次感谢.

membership algorithm regular-language

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

JEdi​​torPane 不设置任何 HTML

我已经搜索过,但还没有看到任何人遇到我的情况……但这是我遇到的问题:

我试图将一小段 HTML 设置为我的 JEditorPane 的文本。这是代码:

JEditorPane htmlPane = new JEditorPane();
String imageString = "<img   src=\"http://tfwiki.net/mediawiki/images2/thumb/3/37/Optimusg1.jpg/350px-Optimusg1.jpg\"/>";
String description = "<table width=300 border=0 cellspacing=0></table>" + imageString + "</table>";
htmlPane.setContentType("text/html");
htmlPane.setText(description);
Run Code Online (Sandbox Code Playgroud)

但是在我调用 setText 之后,我的编辑器窗格内容是:

<html>
  <head>

  </head>
  <body>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

我尝试过在字符串的开头和结尾添加<html>和 的变体</html>,但没有运气。有谁知道我错过了什么或做错了什么?

我使用的是 Java 1.7.0_55 32 位。

html java swing image jeditorpane

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

如何在Perl中以不均匀的批次拆分数组

我试图将一个数组分成500个批次,但我想覆盖数组大小不均匀除以500的情况.例如:

Array = [1,...,1100]
subArray1 = [1..500]
subArray2 = [500..1000]
subArray3 = [1000..1100]
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止:

my @array = [prepopulated];
my $array_size = scalar(@array);
my $start = 0;
my $end = 500;

while ($start < $array_size) {
    my @subArray = @array[$start..$end];
    print Dumper(\@subArray);
    $start = $end;
    if($end + 500 > $array_size) {
        $end = $start + ($array_size % 500);
    } else {
        $end += 500;
    }
}
Run Code Online (Sandbox Code Playgroud)

这似乎有效,但有没有更好的方法来做到这一点,或者在某些情况下,我没有看到这种情况?

arrays perl

0
推荐指数
2
解决办法
152
查看次数