今天无意间看到一篇文章(http://www.vaikan.com/google-interviewing-story/),看到里面有道面试题的算法挺有意思的。问题是这样的:假设这有一个各种字母组成的字符串,假设这还有另外一个字符串,而且这个字符串里的字母数相对少一些。从算法是讲 ...
今天无意间看到一篇文章(http://www.vaikan.com/google-interviewing-story/),看到里面有道面试题的算法挺有意思的。问题是这样的:
var compareString = function(str1, str2) { var i, j, flag, length; //长的字符串每个字母相乘 for (i = 0, j = 1, length = str1.length; i < length; i++) { //相乘结果大于2的53次方时,设置新的属性值result+j来统计结果 if (resultObject['result' + j] * numObject[str1.substr(i, 1)] > Math.pow(2, 53)) { j++; resultObject['result' + j] = 1; } resultObject['result' + j] *= numObject[str1.substr(i, 1)]; } //结果除以短的字符串的每个字母 for (i = 0, length = str2.length; i < length; i++) { flag = 0; for (var z in resultObject) { if (resultObject[z] % numObject[str2.substr(i, 1)] === 0) { flag = 0; break; } else { flag = 1; } } if (flag == 1) { console.log("str2中的第" + (i + 1) + "个字母不存在str1中"); break; } else if (flag == 0 && i == length - 1) { console.log("str2中的字母str1均存在"); } }};
原标题:一个精妙的解决方案并非对于所有语言都是最优解
关键词:
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。