-2

(たとえば、「assdf」と「aash」は false と見なされます)。

4

2 に答える 2

5

問題を逆に述べたと思いますが、NSStringのすべての文字が一意であるかどうかをテストするには、次のように機能するはずです。同一のグリフが異なるコードポイントとして表示される、機能しない面白いユニコードエッジケースがいくつかある可能性があります。

@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 に答える