objective-c - 打乱 NSString 顺序的快速方法?

标签 objective-c random nsstring nsmutablestring anagram

有谁知道改变现有 NSString 或 NSMutableString 字符顺序的现有方法吗?无论如何,我有一个解决方法,但如果有一个现有的方法,那就太好了。

例如,给定字符串@"HORSE",一个方法会返回@"ORSEH"、@"SORHE"、@"ROHES"等?

最佳答案

考虑这段代码:
.h 文件:

@interface NSString (Scrambling)

+ (NSString *)scrambleString:(NSString *)toScramble;

@end

.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

不是最漂亮的代码或执行,但可以完成工作。可能有一种 (const char *) 方法可以做到这一点,但这对我来说很好用。快速测试显示在我的 Mac 上执行的长度为 0.001021 秒。

用法:

NSString *scrambled = [NSString scrambleString:otherString];

改编自另一种语言的代码/伪代码

关于objective-c - 打乱 NSString 顺序的快速方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9003182/

相关文章:

ios - 创建一个可以嵌入到 UIViews 中并处理自己的模态的可重用控件

c# - 使用 Blum Blum Shub 算法的伪随机数生成器

c# - 在四个不同的间隔中随机加倍

math - 来自 32 位自动递增 INTEGER 的伪随机数

ios - 清理格式错误的 UTF-8 数据

iphone - 我无法理解 - (void)playInputClick;

ios - 为 iOS 创建用户身份验证系统(以前使用 Parse 希望 AWS)

ios - 如何在App Store中更改App的背景颜色

ios - NSString 获取字符串中间的字符串

objective-c - NSString 的类别或 Web API 使英文单词复数化?