网址太长。因此,您必须实现一种缩短URL的算法。
一世。URL的结构
URL有两个主要部分:域和路径。域是第一个斜杠之前的URL的一部分。您可以假定URL不包含协议。道路就是一切。
ii。领域
URL的域将类似于:xkcd.com
meta.codegolf.stackexcchhannnge.cooom
。每个部分都是按周期分隔的,例如在中blag.xkcd.com
,这些部分是“ blag”,“ xkcd”和“ com”。这是您将要执行的操作:
如果它包含两个以上的部分,则将最后两部分放在一边,并连接其余部分的第一个字母。
然后,将其连接到第一个字母到倒数第二个字母。
添加句号以及倒数第二部分的第二个和第三个字母。
丢弃最后一部分。
iii。路径
路径将类似于:/questions/2140/
/1407/
。和以前一样,“部分”由斜杠分隔。对于路径中的每个部分,请执行以下操作:
加上斜线
如果它完全由十进制数字组成,则将其解释为数字并转换为36进制整数。
否则,添加零件的第一个字母。
最后,添加一个斜线。
iv。杂项
- 这是代码高尔夫球,因此最短的代码获胜。
- 路径可以为空,但URL始终以斜杠结尾。
- 不会有一个协议(例如
http://
,file:///
) - 域中永远不会少于两个部分。
- 有标准漏洞。
例子
进:xkcd.com/72/
出:x.kc/20/
进:math.stackexchange.com/a/2231/
出:ms.ta/a/1pz/
进:hello.org/somecoolcodeintrepreteriijjkk?code=3g3fzsdg32,g2/
出:h.el/s/
kk
并且所有以开头?
的查询字符串都不应该以斜杠结尾?同样,并非所有网址都以斜杠结尾/
,例如www.something.com/path
。还是与这项挑战的目的无关?