- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试解决 this hackerrank 上的问题:
所以问题是:
jack 和丹尼尔是 friend 。他们都喜欢字母,尤其是大写字母。他们正在从报纸上剪下大写字母,每个人都将自己收集的字母分开存放。一个美好的一天,摩根拜访了 jack 和丹尼尔。他看到了他们的收藏品。 Morgan 想知道由这两个集合组成的字典序最小的字符串是什么。当它位于堆栈顶部时,他可以从集合中取出一封信。还有,Morgan 想用男孩收藏中的所有字母。
这是我在 Perl 中的尝试:
#!/usr/bin/perl
use strict;
use warnings;
chomp(my $n=<>);
while($n>0){
chomp(my $string1=<>);
chomp(my $string2=<>);
lexi($string1,$string2);
$n--;
}
sub lexi{
my($str1,$str2)=@_;
my @str1=split(//,$str1);
my @str2=split(//,$str2);
my $final_string="";
while(@str2 && @str1){
my $st2=$str2[0];
my $st1=$str1[0];
if($st1 le $st2){
$final_string.=$st1;
shift @str1;
}
else{
$final_string.=$st2;
shift @str2;
}
}
if(@str1){
$final_string=$final_string.join('',@str1);
}
else{
$final_string=$final_string.join('',@str2);
}
print $final_string,"\n";
}
示例输入:
2
JACK
DANIEL
ABACABA
ABACABA
第一行包含测试用例的数量 T。接下来的每两行都是这样的格式:第一行包含字符串A,第二行包含字符串B。
示例输出:
DAJACKNIEL
AABABACABACABA
但是对于示例测试用例,它给出了正确的结果,而对于其他测试用例给出了错误的结果/em>。它给出错误结果的一种情况是
1
AABAC
AACAB
它输出 AAAABACCAB
而不是 AAAABACABC
。
我不知道该算法有什么问题以及为什么其他测试用例会失败?
更新:
根据@squeamishossifrage 评论 如果我添加
($str1,$str2)=sort{$a cmp $b}($str1,$str2);
无论用户输入如何,结果都一样,但测试用例仍然失败。
最佳答案
问题在于您对相等字符的处理。举个例子:
ACBA
BCAB
当面对两个相同的字符(在我的示例中为 C
)时,您天真地从第一个字符串中选择了一个,但这并不总是正确的。你需要向前看才能打破僵局。您甚至可能需要提前查看许多字符。在这种情况下,第二个字符串的 C
之后的下一个字符低于第一个字符串的下一个字符,因此您应该先从第二个字符串中取出 C
。
通过将字符串保留为字符串,简单的字符串比较将根据需要比较尽可能多的字符以确定要使用的字符。
sub lexi {
my ($str1, $str2) = @_;
utf8::downgrade($str1); # Makes sure length() will be fast
utf8::downgrade($str2); # since we only have ASCII letters.
my $final_string = "";
while (length($str2) && length($str1)) {
$final_string .= substr($str1 le $str2 ? $str1 : $str2, 0, 1, '');
}
$final_string .= $str1;
$final_string .= $str2;
print $final_string, "\n";
}
关于string - Perl Morgan 和字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33607163/
我正在尝试使用 morgan 来记录对我的 api 服务器的请求。我的路线是这样配置的; app.use logger('dev') app.use '/api/collab/dataobje
我正在使用 morgan('dev') 进行日志记录,但我想存储此对象 "GET/users/get 200 195.315 ms - 393" [in控制台日志]到数据库中。 喜欢 - method
我正在处理一个带有 Node.js 后端的新项目,我的 morgan 记录器工作得非常好。起初,我无法使用任何预定义的 morgan 模板(tiny、short 等)从中获得任何输出,没有任何内容传播
我使用 Morgan 和 Express 为我的网站提供 REST API。我在 main.js 中以这种方式实现 morgan 记录器: app.use(morgan('dev')); //logg
是否有限制或规则来设置/定义 morgan ,以便它仍然遵循设置的颜色模式?我目前有以下 morgan 设置。 morgan.token('date', (req, res, tz) => { r
我使用 Morgan(默认快速生成器请求记录器),并且我尝试在单元测试期间禁用它。 目前我使用默认配置,在 app.js 中加载 Morgan const logger = require('morg
我正在尝试解决 this hackerrank 上的问题: 所以问题是: jack 和丹尼尔是 friend 。他们都喜欢字母,尤其是大写字母。他们正在从报纸上剪下大写字母,每个人都将自己收集的字母分
正在尝试通过应用程序运行时更改 morgan 的日志记录格式。 该值将根据数据库中的某个远程值而改变,我希望 morgan 的输出因此而改变。IE。如果在数据库中值为 1 morgan 的格式为 'd
我正在通过教程学习 nodejs。我遇到了教程适用于旧版本的问题。 我有那个代码: var express = require('express'), stylus = require('st
Morgan's documentation描述了可以拆分请求和响应的日志记录: split / dual logging The morgan middleware can be used as m
我正在使用 NodeJS 网络框架 Expressjs 和一个中间件将请求记录到一个文件 (morgan)。 我的 session : // create a write stream (in app
在一个快速教程中,作者使用了 npm 模块 morgan。 morgan 可以为 express 应用做什么?谁能帮我理解这个? 通过谷歌搜索得到了这个,但我在这里什么都不懂: var express
如何返回 morgan 组合格式字符串 async function sample(){ const res = await axios.get("http://localhost:3000/sa
我想将响应正文记录在我的日志文件中 我尝试过 morgan-body 但我想将响应记录在文件中而不是控制台中 以下代码将记录请求正文,那么有没有办法也记录响应? morgan.token('body'
根据documentation , morgan 有两个参数 - 格式字符串和选项对象。选项对象提到: immediate Write log line on request instead of r
我正在使用 morgan 记录请求和响应,一切正常。我想知道是否有任何方法可以记录错误消息?例如:如果我的应用程序中的 try catch block 失败,我将向用户返回 500 错误和自定义消息。
我正在运行一个基于 keystone.js express 的应用程序。我正在尝试集成 Morgan 日志记录,但当任何 HTTP 请求到达该站点时它都不起作用。我只是在控制台中看到正常输出。我可能做
我刚刚实现了 Winston Logging,它按预期工作,但我遇到了一些我无法找到答案的问题。 据我所知,winston 的工作方式、设置的日志级别和使用优先级以下的任何内容,例如错误时它还将包括信
我无法使用 Morgan 登录。它不会将信息记录到控制台。文档没有说明如何使用它。 我想看看变量是什么。这是 expressjs 框架的 response.js 文件中的代码: var logger
我将 Morgan 与 Express.js 一起使用,我认为我的中间件有问题,因为 Morgan 仅记录返回错误 302(重定向)的请求,这是在我的中间件捕获错误并重定向到其错误页面时发生的. 我是
我是一名优秀的程序员,十分优秀!