想了解一下商米公司IoT产品及服务的发展历程?

这个笔试还是前天做的了,这个题目当时没有写出来,这两天抽时间做了一下,在这里跟大家分享一下。

2、 输入输出要求及样例

我觉得这个题目的难点在于如何将打乱之后的字符串还原成正确的单词序列。经过分析,发现复数数字对应的英文单词都有特征字母,其中0对应的ZERO的特征字母是Z,2对应的TWO的特征字母是W,4对应的FOUR的特征字母是U,6对应的SIX的特征字母是X,8对应的EIGHT的特征字母是G。将这5个数字排除之后,剩下的所有单数数字所对应的单词也可以找到特征字母了(排除5个复数之前这5个单数没办法找出特征字符),其中1对应的ONE的特征字母为O,3对应的THREE的特征字母为T,5对应的FIVE的特征字母为F,7对应的SEVEN的特征字母为S,最后剩下的就是9对应的单词NINE的字母了。
上面解决了把字符串还原成正确单词序列的问题,接下就就应该把单词转换成对应的实际的数字,然后对这些数组进行排序,最后输出即可。

以上解法是笔试的时候的思路,可以看出实现起来还是很繁琐。过后我跟同学交流的时候,同学提到用统计字母出现次数的方法来解这个题目。根据这个想法,我对以上解法进行了一定的改进。主要改进的地方在于首先对各字母的出现次数进行统计,存放在Map<字母,出现次数>里。这样就可以一次性将同一个数字一次取出,而不用逐次取出。并且,取完一个数字之后,只需要将相应字母的出现次数减去相应次数,而不用对字符串进行操作,这样大大的提高了效率。

如果看代码量,好像改进之后的方法并没有更简单,但是效率上却有非常大的提升。我用11885个字符组成的字符串进行了测试对比,解法一所耗时间为292ms,解法二所耗时间为29ms,10倍的差距。以上实现没有经过OJ平台测试,所以我也不能保证绝对正确,写在这里仅供大家参考。
以上是我的两种解法,总体感觉还是很繁琐。如果哪位大神有更好的解法,希望不吝赐教,不胜感激!

}

我要回帖

更多关于 小米iot产品有哪些 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信