内置NSString方法来比较类似字符的数量
是否有内置方法(我无法通过搜索文档找到它)查看两个字符串中类似字母的数量? 这些字母的顺序不相关,所以比较“abc”和“cad”将有66%的字符“c”和“d”匹配。 发生次数也是相关的。 'a'应该是第一次匹配,但不是第二次匹配,因为两个字符串之间只有一个共同的'a'。 有没有一种内置的方式来做到这一点目前通过使用一些按位操作,或者我必须循环和手动比较?
你将不得不自己建立这个,但这是做它的捷径。 有一个名为NSCountedSet
的内置集合类。 这个对象保存每个独特的对象,并计算每个对象的添加数量。
您可以NSCountedSet
两个字符串加载到两个不同的NSCountedSet
集合中。 然后只需检查结果集合中的项目。 例如,从第一个NSCountedSet
获取一个对象。 检查它是否存在于第二个NSCountedSet
。 该特定字母的2个字母中的较小者是这两个字符串共有的那些字母中的多少个。 为了缩短迭代的次数,首先从收集的对象少一些,然后枚举这些对象。
这里是Apple的NSCountedSet
的文档。 https://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSCountedSet_Class/Reference/Reference.html
我很犹豫,但是,可能没有任何方法可以满足您的要求。 我会这样做:
在NSString上创建一个类别。 让我们调用它-(float)percentageOfSimilarCharactersForString:(NSString*)targetString
这里有一个粗略的伪代码进入这个类别:
self
为selfCopy and trim
selfCopy`以仅包含唯一字符。 targetString
为唯一的字符。 为了修剪为独特的字符,您可以使用NSSet
或其子类。 遍历每个角色并添加到集合中会有所帮助。 targetString
相关的NSSet的每个字符,并检查它是否存在于selfCopy
相关的NSSet中。 为此,您可以使用另一个名为containsString的类别。 你可以在这里找到。 每次containsString返回true时,都会增加一个预定义的计数器。 (counter_value/length_of_selfCopy)*100
。 上一篇: NSString built in method to compare number of similar characters
下一篇: Compare two strings?