我有一个字符串数组,我需要将其与另一个字符串数组进行比较,但它们的顺序可能不同。比较两个数组的最佳方法是什么?
这就是我到目前为止所拥有的,只是想知道我是否缺少一种更简单/更有效的方法。
func unorderedEqual(first, second []string) bool {
if len(first) != len(second) {
return false
}
for _, value := range first {
if !contains(value, second) {
return false
}
}
return true
}
func contains(needle string, haystack []string) bool {
for _, matchValue := range haystack {
if matchValue == needle {
return true
}
}
return false
}
Run Code Online (Sandbox Code Playgroud) 我想在指定值之前剪切一个整数数组,并返回一个包含这些值的数组和数组中的其余值.我们可以假设数组已排序.这是我到目前为止:
func cutIntArrBefore(arr1 []int, n int) ([]int, []int) {
arr2 := make([]int, 0, len(arr1))
sliceIndex := 0
for i, num := range arr1 {
if num < n {
arr2 = append(arr2, num)
sliceIndex = i
}
}
sliceIndex = sliceIndex + 1
if sliceIndex >= len(arr1) {
return arr2, nil
} else {
arr1 := arr1[sliceIndex:]
return arr2, arr1
}
}
Run Code Online (Sandbox Code Playgroud)
测试代码:
func main() {
var arr1, arr2, arr3 []int
arr1 = []int{1,2,3,4,5,6,7,8}
arr2, arr3 = cutIntArrBefore(arr1, 5)
fmt.Printf("(%+v) …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种做这样的事情的好方法:
typedef struct user
{
unsigned long id;
//userList defined below
userList friends;
}
typedef struct
{
//userList contains users
user * list;
int count;
} userList;
Run Code Online (Sandbox Code Playgroud)
有没有合法的方法来做到这一点或类似的东西?
好的,首先,我使用GNUStep作为学习Objective-C的方法,因此GNU和Apple实现之间可能存在一些差异.话虽如此,它不应该影响我的问题.
无论如何,要了解我的难题,请将以下代码解析到您的视觉容器中:
#import <Cocoa/Cocoa.h>
int main()
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSEnumerator * LineEnumerator = [[NSArray arrayWithObjects: @"Jim 1", @"Steve 3", nil] objectEnumerator];
NSString * s;
while((s = [LineEnumerator nextObject]))
{
NSArray * parts = [s componentsSeparatedByCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSLog(@"%@", parts);
}
[pool drain];
return NO;
}
Run Code Online (Sandbox Code Playgroud)
以下输出:
2010-10-07 10:03:50.809 a.out[24512] (Jim, "", "", "", "", 1)
2010-10-07 10:03:50.812 a.out[24512] (Steve, "", "", 3)
Run Code Online (Sandbox Code Playgroud)
我的预期输出是:
2010-10-07 10:03:50.809 a.out[24512] (Jim, 1)
2010-10-07 10:03:50.812 a.out[24512] (Steve, 3)
Run Code Online (Sandbox Code Playgroud)
但componentsSeparatedByCharactersInSet似乎是唯一接近我正在寻找的方法(顺便说一下,我想为任何空格,制表符或其他空白字符的混合做好准备).在没有编写新方法的情况下,是否有一种简单的方法可以使用标准库?