V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wangccddaa
V2EX  ›  程序员

出道题,今天发现一个很有意思的编程问题

  •  
  •   wangccddaa · 2015-01-22 18:17:15 +08:00 · 3453 次点击
    这是一个创建于 3592 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有一个字符串,和一个数组,如果数组里面包含这个字符则删除掉这个字符,不包含则把这个字符串添加到 数组中,使用object-c 实现

    14 条回复    2016-01-27 10:18:23 +08:00
    blacktulip
        1
    blacktulip  
       2015-01-22 18:21:23 +08:00
    好簡單的題目... 可是看到最後一句給跪了
    blacktulip
        2
    blacktulip  
       2015-01-22 18:24:11 +08:00
    「如果数组里面包含这个字符则删除掉这个字符,不包含则把这个字符串添加到 数组中」
    這個數組裡面到底是字符?還是字符串?還是既有單個字符又有字符串?比較的時候是從字符串裡面逐個取出字符來跟數組裡面的元素比較,還是拿整個字符串去比較?
    qdwang
        3
    qdwang  
       2015-01-22 18:57:35 +08:00 via Android
    看了半天没看懂题目。。。我太笨了
    wangccddaa
        4
    wangccddaa  
    OP
       2015-01-22 19:05:33 +08:00
    @blacktulip 全部是字符串,坑不在这里
    FrankFang128
        5
    FrankFang128  
       2015-01-22 19:06:27 +08:00 via Android
    哪里有意思
    wangccddaa
        6
    wangccddaa  
    OP
       2015-01-22 19:07:55 +08:00
    @qdwang 就是一个数组里面有若干的字符串,给定一个字符串,判定在不在数组里,在的话则删除,不在则添加到数组中去。
    wangccddaa
        7
    wangccddaa  
    OP
       2015-01-22 19:10:21 +08:00
    @FrankFang128 代码实现很简单,但在运行的时候就有趣了,和多线程有关,写的好的算法可能不会遇到这个问题。就是在实际运行环境中遇到的一个问题。
    ooxxcc
        8
    ooxxcc  
       2015-01-22 19:12:35 +08:00
    就是维护一个内容为字符串的set,向里面插入

    lz这表达能力。。。。
    blacktulip
        9
    blacktulip  
       2015-01-22 19:28:29 +08:00
    array.include?(string) ? array.delete(string) : array.push(string)

    好吧我只懂一點 Ruby ,ObjC 會有什麼坑?
    ooops
        10
    ooops  
       2015-01-22 21:27:05 +08:00
    另: Objective-C/ObjC/OC
    nilennoct
        11
    nilennoct  
       2015-01-22 23:20:58 +08:00
    @wangccddaa 不是有互斥锁吗,为什么多线程会有坑==
    rangercyh
        12
    rangercyh  
       2015-01-23 08:59:05 +08:00
    看了前面觉得题目没什么啊,可看到最后OBJC实现,登时觉得高大上啊。。。。
    hyzjshwo
        13
    hyzjshwo  
       2015-01-23 13:36:30 +08:00
    lz出的什么题啊,是不是有个前提在多线程中操作?或者大字符串或者大数组?
    cr7bean
        14
    cr7bean  
       2016-01-27 10:18:23 +08:00
    这个问题可以分解为两个过程
    1 查找字符串位置
    2 根据需求添加或删除字符串
    代码如下:
    NSString *name = @"yang";
    NSArray *array = @[@"wang", @"li", @"zhang", @"san"];
    NSMutableArray *newArray = [NSMutableArray arrayWithArray: array];
    __block NSUInteger index = 0;

    //查找字符串位置
    [newArray enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
    if ([name isEqualToString: (NSString*)obj]) {
    index = idx;
    * stop = YES;
    return;
    }else{
    index = newArray.count + 1;
    }

    }];

    //根据需求添加或删除字符串
    if (index == newArray.count + 1) {
    [newArray addObject: name];
    }else{
    [newArray removeObjectAtIndex: index];
    }
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2654 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 05:12 · PVG 13:12 · LAX 21:12 · JFK 00:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.