Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 字符串匹配:匹配带空格或不带空格的单词_String_Algorithm - Fatal编程技术网

String 字符串匹配:匹配带空格或不带空格的单词

String 字符串匹配:匹配带空格或不带空格的单词,string,algorithm,String,Algorithm,我想找到一种方法,在以下两个例子中,我可以将bmw映射到宝马,将阿里巴巴映射到阿里巴巴 b m w商店和宝马 我需要确定我是否可以写bmw作为bmw 我想到了这种方法: 从原始字符串中删除空格。这给了bmwshops。现在在bmwshop和bmw中找到最大的公共子字符串 第二个例子: 阿里巴巴和40个小偷,阿里巴巴和40个小偷 在这种情况下,上述方法不起作用 有什么标准算法可以使用吗?听起来你在问这个问题:如何通过删除一些空格来确定字符串A是否可以与字符串B相等 您可以做的是迭代两个字符串,只要

我想找到一种方法,在以下两个例子中,我可以将bmw映射到宝马,将阿里巴巴映射到阿里巴巴

b m w商店和宝马 我需要确定我是否可以写bmw作为bmw

我想到了这种方法:

从原始字符串中删除空格。这给了bmwshops。现在在bmwshop和bmw中找到最大的公共子字符串

第二个例子:

阿里巴巴和40个小偷,阿里巴巴和40个小偷 在这种情况下,上述方法不起作用


有什么标准算法可以使用吗?

听起来你在问这个问题:如何通过删除一些空格来确定字符串A是否可以与字符串B相等

您可以做的是迭代两个字符串,只要它们具有相同的字符,就在这两个字符串中前进,否则,当第一个字符串有空格时,就沿着第一个字符串前进,否则返回false。像这样:

static bool IsEqualToAfterRemovingSpacesFromOne(this string a, string b) {
    return a.IsEqualToAfterRemovingSpacesFromFirst(b)
        || b.IsEqualToAfterRemovingSpacesFromFirst(a);
}
static bool IsEqualToAfterRemovingSpacesFromFirst(this string a, string b) {
    var i = 0;
    var j = 0;
    while (i < a.Length && j < b.Length) {
        if (a[i] == b[j]) {
            i += 1
            j += 1
        } else if (a[i] == ' ') {
            i += 1;
        } else {
            return false;
        }
    }
    return i == a.Length && j == b.Length;
}
以上只是一个稍加修改的字符串比较。如果您想将其扩展到“最大公共子字符串”,则采用最大公共子字符串算法,并执行相同的操作:如果由于第一个字符串中的空格而导致失败,请跳过它。

您是否查看了- 或者从Jon Bentley这里


注意:您必须编写代码来处理空格。

为什么不将空格从两者中删除呢?这两个字符串都是Alibabaa和40小偷。最常见的子字符串是整个第二个字符串:Alibabaa和40小偷。无法根据该信息确定阿里巴巴到阿里巴巴的映射。请进行两次比较,一次删除第一个字符串中的空格,另一次删除第二个字符串中的空格。第二个字符串的顺序是否始终与第一个字符串相同?你永远不必处理单词1你说的我需要决定我是否能写bmw是什么意思?可能以不同方式编写的单词是如何定义的?程序的输出是什么?否则,我不明白为什么你不能把阿里巴巴和40个小偷与阿里巴巴和40个小偷进行比较,然后说:是的,这很合适