(例如,“assdf”和“aash”将被视为错误)。
问问题
430 次
2 回答
5
我认为您倒退了问题,但是要测试 NSString 中的每个字符是否都是唯一的,我认为以下应该可行。可能有一些有趣的 unicode 边缘情况不起作用,其中相同的字形显示为不同的代码点。
@interface NSString(_uniqueChars)
-(BOOL) isEveryCharacterUnique;
@end
@implementation NSString(_uniqueChars)
-(BOOL) isEveryCharacterUnique
{
NSMutableSet *set = [NSMutableSet setWithCapacity:self.length];
for ( NSUInteger i = 0; i < self.length; ++i )
{
unichar c = [self characterAtIndex:i];
[set addObject:[NSNumber numberWithUnsignedShort:c]];
}
return (set.count == self.length);
}
@end
于 2013-01-26T20:15:02.870 回答
1
我也在尝试 NSCharacterSet 但没有结果。这可能是另一种解决方案,但 +1 是更好的解决方案。
- (BOOL) isUnique: (NSString *) aString{
int len = (int)aString.length;
for(int i=0;i<len;i++)
{
NSString *tmp = [aString substringWithRange:NSMakeRange(i, 1)];
for(int j=i+1;j<len;j++)
{
if([[aString substringWithRange:NSMakeRange(j, 1)]isEqualToString: tmp])
{
return NO;
}
}
}
return YES;
}
于 2013-01-28T18:39:19.693 回答