gpt4 book ai didi

objective-c - hackerrank.com 在 Obj-C 上找到 hackerrank 解决方案

转载 作者:搜寻专家 更新时间:2023-10-30 19:41:05 30 4
gpt4 key购买 nike

我正在尝试解决 https://www.hackerrank.com/challenges/find-hackerrank在 Obj-C 上,并通过 xCode 获得正常输出,但不是通过 hackerrank 的“运行代码”按钮。

x代码输出:

http://monosnap.com/image/SBZTETlf6WjEiNPr50zpYQ7G119wC7

hackerrank 输出:

http://monosnap.com/image/9WApf0Q5ptYAkN7Oc1ipw9tBBauSJA

所以看到不同的输出至少很奇怪。

我的代码:

#import <Foundation/Foundation.h>

int main()
{
NSFileHandle *input;
NSData *inputData;

NSString *match = @"hackerrank";
int amount;
NSString *str;

input = [NSFileHandle fileHandleWithStandardInput];
inputData = [input availableData];
amount = [[[NSString alloc] initWithData:inputData encoding:NSUTF8StringEncoding] intValue];

for (int j = 0; j < amount; j++)
{
inputData = [input availableData];

str = [[NSString alloc] initWithData:inputData encoding:NSUTF8StringEncoding];
str = [str stringByReplacingOccurrencesOfString:@"\n" withString:@""];

NSArray *redexArr = @[match,
[NSString stringWithFormat:@"^%@.+", match],
[NSString stringWithFormat:@".+%@$", match]
];

for (int i = 2; i>=-1; i--)
{
if (i <= -1)
{
printf("-1\n");
} else
{
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", redexArr[i]];
if ([pred evaluateWithObject:str])
{
printf("%d\n", i);
break;
}
}
}
}
return 0;
}

有什么想法吗?

最佳答案

在 Xcode 中运行和在 HackerRank 上运行的区别在于,当您在本地运行时,调用

[input availableData];

当您的程序从控制台读取下一行时停止。这使您可以多次调用 availableData,每次都获取下一行。

在 HackerRank 上,虽然 availableData 的第一次调用获取了整个文件,但没有留下任何内容给程序的其余部分使用。

您可以通过逐行读取文件或读取整个内容并在行尾标记处拆分来解决此问题。

这是您通过 HackerRank 上所有测试的固定提交:

#import <Foundation/Foundation.h>

int main()
{
NSFileHandle *input;

NSString *match = @"hackerrank";
int amount;

input = [NSFileHandle fileHandleWithStandardInput];
NSArray *inputData = [[[NSString alloc] initWithData:[input availableData] encoding:NSUTF8StringEncoding] componentsSeparatedByString: @"\n"];
amount = [inputData[0] intValue];

for (int j = 1; j <= amount; j++)
{
NSString *str = inputData[j];

NSArray *redexArr = @[match,
[NSString stringWithFormat:@"^%@.+", match],
[NSString stringWithFormat:@".+%@$", match]
];

for (int i = 2; i>=-1; i--)
{
if (i <= -1)
{
printf("-1\n");
} else
{
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", redexArr[i]];
if ([pred evaluateWithObject:str])
{
printf("%d\n", i);
break;
}
}
}
}
return 0;
}

关于objective-c - hackerrank.com 在 Obj-C 上找到 hackerrank 解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27622055/

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