0

我正在寻找一种算法,我可以在其中比较两个字符串并读出失败者。

我知道比较两个字符串的正常代码,但这还不够。

例子:

NSString *userinput = @"xaplseiPhonr";// (Input from the user)
NSString *correct =@"apple iphone";

在下一步中,我将检查此字符串并列出此示例的失败者:x,l,s, ,r = 5 个失败者

我测试了很多东西,用两个 for 循环将两个字符串保存在一个数组中并进行了比较,但有些地方出了问题,最难的是这个词是否有 2 个相同的字母。或者,如果您没有动态索引搜索,那么“l”之后的整个字母或用户输入中缺少的空格是否为假,依此类推。

所以,如果有人对我有很好的代码,那就太好了


编辑:要比较的代码,但是如果您错过了一个字母或空格,这将不起作用。

for (int i = 0; i < [originalWordLetters count]; i++) 
{
    NSString *originalLetter = [originalWordLetters objectAtIndex:i];

    //NSLog(@"%i: %@", d, originalLetter);
    BOOL letterFound = FALSE;

    while (letterFound == FALSE && d < [userWordLetters count]) 
    {
        if ([originalLetter caseInsensitiveCompare:[userWordLetters objectAtIndex:d]] == NSOrderedSame) 
        {
            //NSLog(@"letter %i correct", d+1);
            letterFound = TRUE;
        }
        else
        {
            //NSLog(@"letter %i false", d+1);
            failedLetters++;
        }
        d++;
    }
}

我有一个工作算法,您可以在其中比较两个字符串。并提出错误

我已将示例项目上传到 GitHub: NSString compareTwoStrings: algorithm output the errors

4

2 回答 2

1

您要做的是计算两个字符串之间的Damerau-Levenshtein 距离。这是一个开源实现NSStringGitHub JanX2/NSString-DamerauLevenshtein

于 2012-07-12T22:41:04.867 回答
0

您可以使用它NSScanner来执行此操作。

于 2012-07-12T21:35:29.507 回答