Java代码挑战 化学符号的命名-第一部分


Java代码挑战是一个新的定期段,从Reddit的   dailyprogrammer 那里获得最佳挑战。这里的情况有些不同,因为我们关注的是Java。仅仅有一个可行的解决方案是不够的;我们正在寻找带有测试的最干净的Java代码。我们欢迎第三方库,但如果你能在没有第三方库的情况下完成,对其他人来说会更容易理解。

如果你能把你的解决方案放在评论里,那就去做吧,但最好把你的答案放在GitHub里,并在评论里附上链接。下周我们将分享最佳解决方案,并分享我们所看到的最佳代码实践!

这是一个更强大的两部分挑战,可能需要更长的时间来完成--我真的很期待看到你想出的解决方案!

说明

Splurth星球的居民正在建立他们自己的   元素周期表 。就像地球上的元素周期表对每个元素都有一个化学符号( H 代表氢, Li 代表锂,等等),Splurth的也是如此。然而,它们的化学符号必须遵循某些规则。

  1. 所有化学符号必须正好是两个字母,所以 B 不是硼的有效符号。
  2. 符号中的两个字母必须出现在元素名称中,但元素名称的第一个字母不一定需要出现在符号中。所以 Hg 对水星无效,但 Cy 是有效的。
  3. 两个字母必须按顺序出现在元素名称中。所以 Vr 对银是有效的,但 Rv 是无效的。明确地说, MaAm 对镁都有效,因为有一个 a 出现在 m 之后,还有一个 m 出现在 a 之后。
  4. 如果符号中的两个字母是相同的,它必须在元素名称中出现两次。所以 Nn 对氙是有效的,但 XxOo 是无效的。

作为Splurth原子和原子相关物品委员会的成员,你必须确定一个拟议的化学符号是否符合这些规则。

细节

写一个函数,给定两个字符串,一个是元素名称,一个是该元素的拟议符号,确定该符号是否符合规则。如果你愿意,你可以解析程序的输入并输出结果,但这不是必须的。

符号将正好有两个字母。元素名称和符号都将只包含字母a-z。元素名和符号的第一个字母都是大写的,其余都是小写的。(如果你觉得这太有挑战性了,也可以假设两者都是小写的。)

例子

Spenglerium, Ee -> true
Zeddemorium, Zr -> true
Venkmine, Kn -> true
Stantzon, Zt -> false
Melintzum, Nn -> false
Tullium, Ty -> false

可选奖励挑战

  1. 给出一个元素名称,找出该名称的有效符号,按字母顺序排在第一位。例如: Gozerium -> Ei , Slimyrine -> Ie
  2. 给出一个元素名称,找出该名称的不同有效符号的数量。例如: Zuulon -> 11 .