java - 如何比较两个字符数组,比较同一年表中的字符,但给出一个代表每个可能符号的额外符号?

标签 java arrays string char contains

char [] text = {'H','e','l','L','o','H','e','l','L','o'};
char[] pat = {'H','e','?','l','o'}; //'?' stands for every possible sign

我们可以忽略字母是大写还是小写。 现在我需要输出它发生的频率。

Output:  He?lo is in HelLoHelLo 2x

我知道您可以使用“contain”等字符串方法,但我如何考虑问号?

最佳答案

public int matchCount(char[] text, char[] pattern) {
    int consecCharHits = 0, matchCount = 0;

    for (int i = 0; i < text.length; i++) {
        if (text[i] == pattern[consecCharHits] || '?' == pattern[consecCharHits]) { // if char matches
            consecCharHits++;
            if (consecCharHits == pattern.length) { // if the whole pattern matches
                matchCount++;
                i -= consecCharHits - 1; // return to the next position to be evaluated
                consecCharHits = 0; // reset consecutive char hits
            }
        } else {
            i -= consecCharHits;
            consecCharHits = 0;
        }
    }
    return matchCount;
}

关于java - 如何比较两个字符数组,比较同一年表中的字符,但给出一个代表每个可能符号的额外符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53363656/

相关文章:

java - 如何使用 java 程序最好地处理数据库中的简单列替换?

c++ - 将瓦片 map 解析为高效的水平和垂直边界框

java - ListView 到字符串数组

javascript - 转义序列化字符串中的#符号

c - 读取用户输入并检查字符串

java - 未检测到 JDK

java - Spring boot 项目的实时重新加载

java - 如何在 JSP 循环中使用动态集合名称?

arrays - Laravel 4.x 分页数组

java - 为什么 ArrayList 的最大数组大小是 Integer.MAX_VALUE - 8?