gpt4 book ai didi

iphone - 有没有一种方法可以对 NSString 进行排序?

转载 作者:太空狗 更新时间:2023-10-30 03:58:31 24 4
gpt4 key购买 nike

有谁知道是否有一种方法可以对 ASCII 字符的 NSString 进行排序?理想情况下,我想要一种方法来检查一个字符串是否是另一个字符串的排列,所以我的想法是以规范的方式对两个字符串进行排序,然后比较它们。任何想法将不胜感激。谢谢。

编辑:这正是我所追求的。我想要一个将两个 NSStrings 作为输入并返回一个 BOOL 的方法:

- (BOOL)isPermutation:(NSString *)string1 
ofString:(NSString *)string2;

如果一个字符串可以重新排列成另一个字符串,则返回值应为YES,否则为NO

NSString 是带有 ASCII 字符的任意字符串,而不是句子、数字或单词。只是带有 ASCII 字符的任意字符串。

最佳答案

你真的需要排序来检查这个吗?考虑算法。

create 2 counter arrays, ac and bc, both of size 128initialize them with 0for each char c in string a make ac[c]++for each char c in string b make bc[c]++if all 128 counters in ac and bc are same, then they r permutation of one another

这甚至可能比排序运行得更快。

编辑:这是一个可能的实现。由于我没有编译代码,可能会有一些小错误。

- (BOOL)isPermutation:(NSString *)string1 ofString:(NSString *)string2 {    if ([string1 length] != [string2 length]) {        return FALSE;        }    NSInteger counter1[128];    NSInteger counter2[128];    NSInteger i;    NSInteger len = [string1 length];    for (i = 0; i < 128; i++) {        counter1[i] = counter2[i] = 0;    }    for (i = 0; i < len; i++) {        unichar ch1 = [string1 characterAtIndex:i];        unichar ch2 = [string2 characterAtIndex:i];        counter1[ch1]++;        counter2[ch2]++;    }    for (i = 0; i < 128; i++) {        if (counter1[i] != counter2[i]) {            return FALSE;        }    }    return TRUE;}

关于iphone - 有没有一种方法可以对 NSString 进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5503582/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com