Java 单个字母导致的字符串不匹配
我想知道字符串是否有单个不匹配项Java 单个字母导致的字符串不匹配,java,string,Java,String,我想知道字符串是否有单个不匹配项 1)CHARACTER INTERCHANGE W/O DISTURBING PATTERN ACRPG0182F v/s ACRPG0812F ACNPA4428K v/s ACHPA4428K 2)CHARACTER LENGTH DIFFERS BY 1 DIGIT ACRPG0182F v/s ACRPG0812 ACRPG0182F v/s CRPG0812F 在案例1中,两个字符串长度相同,但有1个字符不匹配在案例2中,两个字符串长度相差1,并且
1)CHARACTER INTERCHANGE W/O DISTURBING PATTERN
ACRPG0182F v/s ACRPG0812F
ACNPA4428K v/s ACHPA4428K
2)CHARACTER LENGTH DIFFERS BY 1 DIGIT
ACRPG0182F v/s ACRPG0812
ACRPG0182F v/s CRPG0812F
在案例1中,两个字符串长度相同,但有1个字符不匹配在案例2中,两个字符串长度相差1,并且两个字符串中的任何一个字符都可能不匹配。
- 使用正则表达式(
)获取数字\d+
- 用所有字符(
)填充numberStr.tocharray()
集合
- 使用
-set
并查看它是否只有一个元素set.difference(set1,set2)
StringUtils.getLevenshteInstance(s1,s2)
from将执行此操作。在字符串上定义一个Xor函数 这听起来像是1
,请查看链接中的算法。正如Bozho所提到的,使用可能是解决问题的最直接途径。该页面的定义似乎正是您所要求的
Levenshtein距离(LD)是衡量两个物体之间相似性的一种方法
字符串,我们将其称为源字符串和
目标字符串(t)。距离是删除的数量,
将s转换为t所需的插入或替换
关于这些字符串的预期长度有什么信息吗?如果1两个字符串的长度相同,而2个字符串的长度相差1个字母,我的意思是,如果你不想让算法在30000个字符的字符串上运行得足够快,那么你可以使用直接而简单的解决方案(iter所有字符串)。只是澄清一下-在第二种情况下,字符串的长度不同,并且具有相同的字符(缺少的字符除外)。这就是你想要抓住的;相同的字符,长度短一点?当我深入研究他的例子时,这是行不通的。他需要一个不同于我阅读他的问题的逻辑,是和否。似乎他需要一个1或2的levenstein距离,其中两个问题实际上是相互交换字母。根据输入,使用levenstein算法将输入过滤到只有1-2距离的输入,然后分析2以检查附加约束似乎是一种合理的方法。随着我深入了解他的示例,这将不起作用。他需要一个不同的逻辑,如果你应用这个问题的例子,你得到的距离是2。我不确定这是否足以满足你的需要。你甚至可以得到3个。这就是为什么我添加了Sets.difference解决方案