javascript - 使用 javascript 找出不同之处

标签 javascript hashtable

这是一道 leetcode 题。
给定两个仅由小写字母组成的字符串 s 和 t。

字符串t是由字符串s随机打乱,然后在随机位置再加一个字母生成的。

找到在 t 中添加的字母。

https://leetcode.com/problems/find-the-difference/
我试图以哈希表的方式思考,但似乎我错了。

var findTheDifference = function(s, t) {
var hashTable = {};
var array = s.split('');
   array.forEach(function (element) {
   hashTable[element] = element;
   });
   for( var i = 0; i < t.length; i++) {
      if(!hashTable.hasOwnProperty(t.charAt(i))) {
         return t.charAt(i);
      }
  }
};


这个错误的代码可以通过示例输入:

Input:
s = "abcd"
t = "abcde"

Output:
e

但对于大字符串会出错

Input :"ymbgaraibkfmvocpizdydugvalagaivdbfsfbepeyccqfepzvtpyxtbadkhmwmoswrcxnargtlswqemafandgkmydtimuzvjwxvlfwlhvkrgcsithaqlcvrihrwqkpjdhgfgreqoxzfvhjzojhghfwbvpfzectwwhexthbsndovxejsntmjihchaotbgcysfdaojkjldprwyrnischrgmtvjcorypvopfmegizfkvudubnejzfqffvgdoxohuinkyygbdzmshvyqyhsozwvlhevfepdvafgkqpkmcsikfyxczcovrmwqxxbnhfzcjjcpgzjjfateajnnvlbwhyppdleahgaypxidkpwmfqwqyofwdqgxhjaxvyrzupfwesmxbjszolgwqvfiozofncbohduqgiswuiyddmwlwubetyaummenkdfptjczxemryuotrrymrfdxtrebpbjtpnuhsbnovhectpjhfhahbqrfbyxggobsweefcwxpqsspyssrmdhuelkkvyjxswjwofngpwfxvknkjviiavorwyfzlnktmfwxkvwkrwdcxjfzikdyswsuxegmhtnxjraqrdchaauazfhtklxsksbhwgjphgbasfnlwqwukprgvihntsyymdrfovaszjywuqygpvjtvlsvvqbvzsmgweiayhlubnbsitvfxawhfmfiatxvqrcwjshvovxknnxnyyfexqycrlyksderlqarqhkxyaqwlwoqcribumrqjtelhwdvaiysgjlvksrfvjlcaiwrirtkkxbwgicyhvakxgdjwnwmubkiazdjkfmotglclqndqjxethoutvjchjbkoasnnfbgrnycucfpeovruguzumgmgddqwjgdvaujhyqsqtoexmnfuluaqbxoofvotvfoiexbnprrxptchmlctzgqtkivsilwgwgvpidpvasurraqfkcmxhdapjrlrnkbklwkrvoaziznlpor"


"qhxepbshlrhoecdaodgpousbzfcqjxulatciapuftffahhlmxbufgjuxstfjvljybfxnenlacmjqoymvamphpxnolwijwcecgwbcjhgdybfffwoygikvoecdggplfohemfypxfsvdrseyhmvkoovxhdvoavsqqbrsqrkqhbtmgwaurgisloqjixfwfvwtszcxwktkwesaxsmhsvlitegrlzkvfqoiiwxbzskzoewbkxtphapavbyvhzvgrrfriddnsrftfowhdanvhjvurhljmpxvpddxmzfgwwpkjrfgqptrmumoemhfpojnxzwlrxkcafvbhlwrapubhveattfifsmiounhqusvhywnxhwrgamgnesxmzliyzisqrwvkiyderyotxhwspqrrkeczjysfujvovsfcfouykcqyjoobfdgnlswfzjmyucaxuaslzwfnetekymrwbvponiaojdqnbmboldvvitamntwnyaeppjaohwkrisrlrgwcjqqgxeqerjrbapfzurcwxhcwzugcgnirkkrxdthtbmdqgvqxilllrsbwjhwqszrjtzyetwubdrlyakzxcveufvhqugyawvkivwonvmrgnchkzdysngqdibhkyboyftxcvvjoggecjsajbuqkjjxfvynrjsnvtfvgpgveycxidhhfauvjovmnbqgoxsafknluyimkczykwdgvqwlvvgdmufxdypwnajkncoynqticfetcdafvtqszuwfmrdggifokwmkgzuxnhncmnsstffqpqbplypapctctfhqpihavligbrutxmmygiyaklqtakdidvnvrjfteazeqmbgklrgrorudayokxptswwkcircwuhcavhdparjfkjypkyxhbgwxbkvpvrtzjaetahmxevmkhdfyidhrdeejapfbafwmdqjqszwnwzgclitdhlnkaiyldwkwwzvhyorgbysyjbxsspnjdewjxbhpsvj"

感谢任何建议~~~~

最佳答案

一种方法是对字符串进行排序,然后找出它们之间的第一个区别是:

var str = "1122334477422";
var str2 = "15122332247744";
var sorted = str.split('').sort();
var sorted2 = str2.split('').sort()
for(var i = 0; i< sorted2.length; i++){
    if(i == sorted2.length || sorted[i] != sorted2[i]){
        alert(sorted2[i]);
        break;
    }
}

关于javascript - 使用 javascript 找出不同之处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39210796/

相关文章:

php - jQuery 无法处理超链接点击

javascript - box2dweb 光线转换

c++:制作链接列表的 vector

c++ - 当我访问数组的元素时,硬件级别会发生什么?

javascript - HTML:从没有 ID 的输入中获取值

javascript - 在单个工作表而不是整个电子表格上运行 Google 脚本

javascript - Expressjs JavaScript 基础 : exports = module. exports = createApplication;

对象引用的 Java 哈希表问题

java - 使用java实现open hash中的惰性删除的高效方法

c - 实现二次探测和链接 - 搜索字典