Bob*_*-ob 3 random objective-c nsstring anagram nsmutablestring
有没有人知道改变现有NSString或NSMutableString字符顺序的现有方法?无论如何我都有一个解决方法,但如果有一个现有的方法,它会很棒.
例如,给定字符串@"HORSE",一个返回@"ORSEH",@"SORHE",@"ROHES"等的方法?
考虑以下代码:
.h文件:
@interface NSString (Scrambling)
+ (NSString *)scrambleString:(NSString *)toScramble;
@end
Run Code Online (Sandbox Code Playgroud)
.m文件:
@implementation NSString (Scrambling)
+ (NSString *)scrambleString:(NSString *)toScramble {
for (int i = 0; i < [toScramble length] * 15; i ++) {
int pos = arc4random() % [toScramble length];
int pos2 = arc4random() % ([toScramble length] - 1);
char ch = [toScramble characterAtIndex:pos];
NSString *before = [toScramble substringToIndex:pos];
NSString *after = [toScramble substringFromIndex:pos + 1];
NSString *temp = [before stringByAppendingString:after];
before = [temp substringToIndex:pos2];
after = [temp substringFromIndex:pos2];
toScramble = [before stringByAppendingFormat:@"%c%@", ch, after];
}
return toScramble;
}
@end
Run Code Online (Sandbox Code Playgroud)
不是最美丽的代码或执行,但完成工作.可能有一种(const char*)方法可以做到这一点,但这对我来说很好.快速测试显示在我的Mac上执行0.001021秒的长度.
用法:
NSString *scrambled = [NSString scrambleString:otherString];
Run Code Online (Sandbox Code Playgroud)
代码改编自另一种语言/伪代码
| 归档时间: |
|
| 查看次数: |
1269 次 |
| 最近记录: |