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

2015-01-22 18:17:15 +08:00
 wangccddaa

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

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

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

好吧我只懂一點 Ruby ,ObjC 會有什麼坑?
ooops
2015-01-22 21:27:05 +08:00
另: Objective-C/ObjC/OC
nilennoct
2015-01-22 23:20:58 +08:00
@wangccddaa 不是有互斥锁吗,为什么多线程会有坑==
rangercyh
2015-01-23 08:59:05 +08:00
看了前面觉得题目没什么啊,可看到最后OBJC实现,登时觉得高大上啊。。。。
hyzjshwo
2015-01-23 13:36:30 +08:00
lz出的什么题啊,是不是有个前提在多线程中操作?或者大字符串或者大数组?
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];
}

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/164572

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX