leetcode-Group Anagrams
2016-04-17 12:07
369 查看
Given an array of strings, group anagrams together.
For example, given:
Return:
Note:
For the return value, each inner list's elements must follow the lexicographic order.
All inputs will be in lower-case;
映射关系如下:
![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAXkAAACPCAIAAACQ3TzaAAAfpUlEQVR4nO2dzVcTWf7/7/9C5Y8gYVGrXtiahzlzzsym5SHOOdObgQCbOb2AAMOKowRsZ04LgpwzY9sI0guPNrb0aDRK6OlBYHhowUB4FmgR0xoa0e/i/ePzu1ZCSFXqJhR1XxupW1W3qj5V91Wfe6sqsg8SiUQiHnbu3DlVIpFkx7lz5wrdZq0KU1W10PsgkVgGVVVXVlY2NjYKvSPWQ7pGItEBXLOyslLoHbEeTFXV9xKJJDukawwjXSOR6EC6xjDSNRKJDqRrDHO0a/x+v8/nGxgYSDu3p6fH5/PV1tYKOK0SybFDusYwR7hmZGSEHbCzs6OZu7y8THNFnl+J5LggXWOYrFxTW1vLGEtNbdrb2xljPp9PukZiE6RrDJOVa9rb20tKSkpKSjRzHQ5HU1OTxjXLy8so9Pl8PT09VD49Pe3z+d6/fz8wMIC5h/XLJJJji3SNYbJ1zcDAAGNsenqaZqFkeXmZd83Q0JDD4ejp6RkZGenp6WGMNTU18VXV1tb6/f7UuRKJJZCuMUy2rtnZ2YEpaBZyE/xBrtnZ2eGHdfx+P81CVX6/n+Y2NTWlHQaSSI4t0jWGYaqq7h9ONBqFa/b392tqahhjr1692t/fX1pawgjO/v6+1+tljKVdHQM6fFXRaFRTOV8ikRxzpGsMo8M1U1NT5Bd4B8toXBONRpuamrxer9frdTgcR7pmaGgoww7IT0NVVT137pzRppErdoi/rvCqprrGJuHV7Zr9/X2MEL969Yov5F2DQZympqZoNBqNRnklGctrVPm51ocPmc+RUPIQ/5mZGZ/PJ3orGdAVXtVU19jh8qZj1OcaDOjCIEtLSyjkXYN0hlZP7UMhLeJro3rMvdZXVlZ8Pt/MzAwmcUEbuERev3598eJFn8/n9/t/+OEHXevOzMwYWCsVVVWXl5dfvHiRfZMwC73x9/v93377raawtrY2tZD48ccfGWNG4nLA69eva2trL168aGx1XeGVrtGLevBlvD7XIKNhjFVUVNAyGtc4HA78jT6XxjWMsampKVTlcDh4MR12ao2N4WEoemRk5P3BO4fGXm5GKjcyMjIwMOBwOPAkjp7fZwApHqJnYLs8aAzLy8vZNAZz0Rv/2tpazbsRCD7/BFMDzpTB0Lx/Pz09ja76kWfkMHSF13TXGD5wq0AR0+ea/YORGn6QhXcN/AKJoDOlcQ0yHcxFd8zca50g1+zs7JSUlPDPv7JnenqahPWee8p2ZPOg53d2c83Q0BDehKCSnp4eh8ORYZUcXYO7SElJiXTN8SRb1+zv70ejUd4Ir1690oywLC0tIVXhV8Ey/ML86Ew0GtWskuHUGjtCcg0uRP7J+s7OTnt7u+Z9Qr/fPzQ0RMu0t7e3t7fjnqx5CWhgYKCkpAQ3Urq+fT7f8vKy3++H1MhKdnPN+4M3PGmypKSEJuk9T7xjhULeNU1NTfwbnj6fjxKi5eXl2tpazboof8+9gWEA6Rqh6HCNWRh7wp2ja/Duj+YVHqQ5IyMjuAnDBZrkn77JwKCSz+cjEy0vL6NwZGSELnqkaQMDA5qXoW3omqamJkpkIGtKc+g9TyS8KOdd4/P5+HBpesHt7e30Fiivm/fSNccYu7gGLxPygwXwC9kHozDvD7pLuPox1ELLjIyMoB7Kj1LTfsYY/0EGX2431yCSiHlPTw9vcF765ItsXINsiMpra2s1o2/SNceWj1zzLi9sb29Ho9Ht7W1da+Xeh/L7/Xwfir4XBegNYRZl+36/P3UgGU0I5Wldo7nTUrkprllaWlpaWhJ0akyPP3WjSkpKeAWjS4vI63KNz+dzOBx01vA3v8UcXZN9eKVr9FIA1xjDlLFhh8NB7mhvb3c4HCMclPVQOnPYcxOM8ryXrjkKjAfzqeJ7brwcYdfrGnR7CX74+b10zTHGSq4xlvzzXTY8Hevp6aG/045M44k+/9ge4y801+Fw1NTUUOX8m0GHdQ81T/GMUVjXGNhhfMLi9Xr5dyNgefyNs0APCuhhZUVFBb0GgQwUy0BeGZ5aal7s0kVhXWNsny2EvVyzf/DeIBSD/MV7QFNTE62FJ/qw0v7+/tTUlMPhoEf4Xq+XLveSkhKHw1FSUoJJjWumpqZQOb0BwL/EqBfLuQbx0by6CQEhGoheqmvgIMzFuaCoYpLOGtVMccZc/myKCK90jV5Ovmv2U57WR6NRykTwMB7w6QlGjjX3z6mpKc1iVCHlR2nfDODJ/Hp0ZqzomqWlpbSJHgVtamoKEdO8RYFJhEsTVdQJqFwT5yzfpeCRrhGKLVxjgJqaGj7tPyZY0TUWQrpGKNI1acB4TS6dHUFI1whFukYo0jVpSH0l+pggXSMU6RqhSNdYCekaoUjXCOUj1+wdY465CvMDNQYZfxHoCq/prin00QtHusZKSNcIRbpGKNI1VkK6RijSNUKRrrESJ9s1k5OTXq9X9FYyIF0jlJPvmsXFRa/XOzk5iUlc0IuLi3rr2d7ebmtrw+v29+7dy36tq1ev4pXWq1ev6t2oBgu5pqKi4ubNm5rCmpqa1EIC7w0bicu7d+/evbt58ya+bGhsbNT7ZS+QrhHKyXcNfaPw7t27xcVFxlhNTY2Belwul8vlikajN2/edDgckNeRt+KKioqKigqsZXjTRNrGYLp60laoN/41NTUul4svQfBJ+qnk4pqrV6+6XK579+7du3fP5XI5HA4DlUjXCMVGrtne3na5XBUVFQYqmZycJGG9e/due3sbd84jmwd/g21ra8vlvv0upTGMjY19/vnnwWDQ3FD/+9//9vv9P/74Yy7xv3fvHmOMzx+vXr2aWQG5uIaPM3930YV0jVCs5BpjKw4PDzPGhoeHq6urXS7Xy5cvadbLly/RLfJ6vf39/SgsLy///vvvaZm2tra2trZ4PM4Ya2xs5Gvu7+93uVz0HSAKvV5vPB4vLy8vLy/X7AlcY+woADWG9fX1YDCoqqqqqoODg7nUmZbf/e53qqp+8cUX1PAMxF9RFD5iLpeLJuPxeGNjo9frLS8vHx4eRiHOFP5ubGykM7K3t4deMK1bXV2tWZeHzrjeHS6sa/TureWwi2vwBTAvmr29PZfLhev1+++/Z4y1tbXt7e1BSbQMYwwXfXd3N+ohE8XjcRQODw/Tlc0Yc7lc/f39fFMBaB7GjgKoqhqLxdra2j755BP1ABEjOF988QUq/+STT/7xj3+8fPnSQPwbGxsVRcHfkHU8Hsekoijd3d3Dw8ONjY1UzrvG6/XidAByB+ppa2sbHh6m4Gu2a9jp0jVC+cg1vx1jcnRNeXk5BguoHH4h+/T396NhoLuEq7+/v59fZnh4GPVQfsQ3D8AY6+7uTt0NbI7fAQOoqurxeNS8gzRH794ikjjk7u5u3uC89MkX2bgG2RCVV1dXV1dX8xuFjNKegiNRVXVxcXFxcTHLC1K6Rhd2cQ00wfehcPejn0FBbwizKNsvLy/XXMp7B00I5Wldk3qnxSqpmY5eVFV9+PDh559/zotgZmYmy+aRPc3NzVT/uXPnfvjhh+bmZgM7TN0ol8vFt390aekXZ7J3jdfrVRSFzhr+psVevnzpcrlST1mWSNcIxUauefnypaIodCG2tbUpijLMQUkHpTOHZSIY5dnLzjVmiWbvoDFMT08PDAz8/ve/hwvC4fD09PSiqeC/l3a73f/85z9R0tzcbKCn1t3drSgKnyruHQQN/SB+bCVL16DbS1C1OYpmT7pGMDZyzd5Bs8cNls/wNcAyuG2ihB9/4Z2Fyuly30txDZ8E5Q7fGJ4/f37p0qVTp05dunTJ3LxmbW3t9OnTnZ2dz58/J/sYy2vQo9EMVMHyfHxSXVNeXk4JCzJQLAN5acbd9g5Eoxn714t0jVDs5Zq9gyFeKAb5CyXk/EOT6upqvts/OTmpKAoydqxC17TL5VIUhQYjNK6h5Qn+IZdeUhvDxMTEwMCAua6Zm5tbW1v77bffSDS5xB+dUz6tg4AQTEQv1TVwEObiXFBUMUnxRM3wkcvlonI+LTIc3swXpHSNLk6+a/b29tCB4if5xDs1G99LGTkGk5OTmsWoQsqPNNvCKjwibrymj9ekVms4/vF4/LAn0wja5OQkYoJzQQtgkh5R8XFDnXw8+ZLUs5kl0jVCsZJr8rm56urq8vLyfG4xG3Q1BtM3nf+N5pnCukb00RUc6Zo0/PLLL0j787bFLJGuEYp0jVCka9Lwyy+/PHnyJG+by560jeHp06fmbmVtbS2RSKRu2tytHEOka4TykWt2jzF2OBlHQo1hd3d3bW2to6PD5/P19PSYG+qtrS2fz/f3v/89Ho/bKv58eLO5IKVrdCFdYyXQGPBmHb1rNzs7u7u7m2ULyZK//OUvqLy+vn5kZMQm8ZeuEYp0jZXAW7xq3vnss8/sEH/pGqFI11gJNd03Cnjjztxop36jYIf4S9cIxUquKfQuFB413TcKT548Mf0bBfShNN8omG40DQsLC6FQSOgmMlNY14g+uoJz8l2ztbUVCoUWFhbSTuri8ePHoVCoq6tL1+oTExOhUCgUCt29e9fARnn4xkDfKPzrX/8y1wKvX7/+wx/+0NHRoflGQVcloVDo8ePHmsK+vr7UQuLx48eMMSN7vLu7u7u7sLDQ1dUVCoX6+vq2trYM1CBdI5ST7xpcwbjEt7a28NWMgXoCgQBjLBQK4Q/o5shbcVdXl6IoDQ0NDQ0NjLGGhgZjRwFSG8PExERvb6+5ronH42tra7u7uySaXf3xx6+F8SVbW1uMsQzCzcU1ExMTjLFAIBAKhfDJiIFKpGuEYi/XBAIBl8tl4Ka3sLDAt5OJiQm45sjmMTExQZsLhUK53Ld3D28Mgno3fLV649/X18cY40ONkgyr5OKahYUFSjb5M64L6Rqh2Mg1XV1djLGJiQnNXHRw6EoNhUL8Mnfv3u3r68Nts6+vT7MuJTuU3eCPrq6urq4uzZ40NDQoimLsKECGxiB6MEVv/JHF8EEoLy8PBAI0effuXXRIyUe8azS9LU23t6+vT7Muz927dynx1IV0jVA+ck3yGJOja9CF0YgmEAgoihIKhTAXaYsm+VcUBQ0Gv8gXCoX4tpHqGsaYx+MJBALUrtAwUK1mB/Siqmo8Ho/H45aIP7JI/A31kD7w66uhUMjj8VD6w7vG4/HwnVNNLxhzcUb4dAY9XI/HY2xoTFd4pWv0YhfX4NcJ+NsgUhU+nUHDwF2Rv/r5ZRhj/LBLatqfOigD18BKuY/XWMg1fH7R19fH53QkHd5B2bgG419U7vF4+HNBtw2Px2OgpyxdIxQrucbYipFIhDE2ODjodDrLysqovLW1VVGU1gPgAsxCLpNMJgOBAL8KQF+stbWVKufnMsYikUiGPTlsbjYU1jUG1kI3KplMlpWVBYNBKt/c3Lxx4wYiTzHhg+nxeBBhqgfLeDwezAKY1Gx0c3OTTpAuCusavXtrOezimkgkMj4+Tpd+MsU1ra2tmlnJZBKSSq0zGAziEtflGsw10AYIy7kmGAw6nc75+XnG2Pj4OAoxScrIxTWtra1pT1BaB2VzjNI14rCRa5LJ5I0bN+jvwcFBxtjm5mbqKmgMwWCQLv1IJDI/P08LeDwe5DuonK9E45obN27Q35AdNTkDWM41OGQYhwpJ5cmDHCStawKBAP7mz6CmKmJwcJDOwubmJmWmupCuEYq9XJNMJtFXwnWJsWG6Q/JeKCsrQyPBJMQUCASQt5My0FT4DoLGNU6n0+l0tra2wlzUfoxhOdckk0lFUfh0MnlwRhBMp9OZ1jUIeDAYDAQC/DKbm5tOp5NPbchBiqIEg0GIzOl0pr2LHHmM0jXiOPmu2dzcbG1tpawEk6SDwcHBtNk4rnU+l5mfn+/q6oKS+Ot4fn5e0//i1+I3kUtGA6zoGhy+puWPj48jaPPz8zdu3EDEEElaJhKJULQ1Z5DGevioos7DelXZIF0jlJPvGmMclqsXFiu6xkKcMNcMDg6mDlqVlZUZdnGOSNekR5P2HxOka4RywlyDcXdNYeanE8FgkB9JMBfpmjQgmTfQ4RdN2sYwOjpq7lYWFhZ2dnZSN23uVo4h+XENXvwplGvGx8czXNiax3/mIl1jJfjGsLq6it8A7evrM3crOzs7+A3QhYUFftPmbuUYkh/X7O7unj179quvvlpdXc2/a/jMhV5QwpMNPPRQFMXj8YjIbqRrrAQaw9DQ0N/+9jf1ABjB3I5VbW0tKq+vr49Go0l7xD9vfaiGhgaEt6Gh4b///W8+XUOZCx4CRiIRvHqWTCYjkYjT6QwEApo3PMxCusZKqAX9DdBCH71w8h9YcPbsWRHhzeyasrKysrIyTX9K9qGSSemaZDKZTKqqGg6HNb8BOjc3Z/poMZ83nTt3bmhoyA7xV/OV11y8eJHC+6c//en+/fv5d834+Dg6TYFAgLIY6ZpkUrommUweNIapqambN2/yvwE6NTUVNxX+N0BR0tzcLPr51+bmZi4fi+UOwvvs2bNsQtTc3DwzMzMzM7Oin7/+9a8I77Vr11AiIryZXQPGx8fx2mraueZiC9dEIhE+V9RMZg8ag7FX8rBujt1g/sY7NzeH3wDt7u429zLd2dk5ffp0R0cHMiZqWroqSXuw4+PjGSKQ+nGZMQyfo/zkNbu7u3/84x/xS7JkH73hzYZsXJM8eG2V5ub4ansGrOSat4agbxQwWVVVxRjb2NjQW09vby9jzO124xV41LCxsUE1Z8btdjPGLly4oHe7PKmNYXx8HKmHiaH+3//+t7q6mkwmSTQG4u90OquqqjSFjLHe3t7DVsGZMhIXjgsXLuA0GVg3P65ZXV3d2tr68OEDiebDhw+GL+8MXLlyBaEAwWDw7du3brcbF2EwGEQ5vgXBKt999x1WuXLliun785FrTK/dRExxDaI/Njamt5KNjQ3GGJ2AK1euoJIsm0dvb6+iKHSaDUONQVOeWmIKfLV6449Q8yW4jjNYPnfXxGIxxlhVVVWOrslyYcPjNYBfV0Trw42QwBU7NjYWi8XwB8oxScRisUgkYuBmfCQ2cg3++O677/i5dD745flAx2IxnJXUdWOxGFoUXwP+GBsbI6NtbGwoihKJRMS5Jg/ojT+aPZ/FVFVVlZWV0SQiz3ufdw01CZqlOSmadUFZWdmFCxcuXLhgCdfwHPPWZwp2cQ2koEngqVvkdDoVRcG1q0n+nU4nMkwsw1upt7cXnyAjF0UhOkqKoiiKghK69G3lmrdv3+KpKk3y8cdX70jgKXS8azSx4nvBtC5SRXIQVt/Y2JCuOZ7YxTV84we48dIVTA0DAuKXgYNisRjahtPppAQnNe3XDBag84Ua7OYaRBIuQAeKZlEc+LOQjWv4OpEwUseWRhmka44ndnENrlH+8r1y5QryFEDjC7AD7sD42puvbWxsDM8IoZu0ruFzn6qqKsqS7OYaPpJ8HAD6QfxoWjauwS2BzhoNzWBEDAtL1xxP7OKaSCSCWyuJgB5YEJTw0xWsKEra5yZlZWVYILNraMwCDQO9MwMj04S1XPP2YIwG0qFkcGNjg3pP+CN711DXicBi+KEsEhDevjdwjNI14rCRa94edPUx6Mj3lTSMjY1RKoR0XTNWTzLK7JqxsTG+VaArxw9h6MVyroHfkUJSISZpnOUw19CDWKgKy2gGmAk+zvglQLfbrTlrRyJdIxQrueaNIR49esQYe/ToESbxo5xv3rx58eIF/meFRwc8ffqU1sKgb1VVFSY7OzuR4zx69AgJ0Z07d968efP8+XN0zTD55s0bflsacBM2dhSgsK4xts+MMcZYfX09lUDiCCY6pIgYzhSWoSCjc0TLPH36FAGns/b8+XPNFtGHEh1e011jLLwW4uS75vnz5263mzyCSajhxYsX9fX1fDZOa6E98Nbo7e1F16mqqoovv3PnDvpfmOS3paG+vr63t9fYUQArugYtX2OEzs5OBO3OnTv19fWI2NOnT3lHYMWqqiqUU1SfPn2KvBKQ5Yne3l5ebdkjXSOUj1xT6J3JRJ53D4lMPreYDaqq4j+uLsim87/RPKMrvNI1epGuSY+iKMbujUKRrhGKdI1QpGvSgH5W6kBAwUnbGCYmJszdSiwW297eTt20uVs5hkjXCEW6xkrwjWF5efny5cs+n+/bb781dyvb29ufffbZpUuXYrEYv2lzt3IMka4RinSNlUBj0PwGaCwWM71XVVNTg8rr6uqePHnyxh7xl64RipVc86vtUVXV7/ereQe/AVrooxdOYV1T6KMXjnSNlVBVNRwO//nPf+ZFMDU1ZXpew+dNfr9/aGioubm50EcvHOkaoUjXWAk0hqmpqf7+fvoN0AcPHkA3JgKd4TdAUdLc3LywsCD06NbX1x8+fCh0E5mRrhGKLVzz8OHD9fX1wyazB41hdHRU7yqErnVT4RvD7Ozsl19+eerUqS+//NLcvGZjY+PTTz+9fPny7Ows2UdvXvPw4cO5uTlN4ejoaGohvwpjzEhcDlbnMVCDdI1QPnJNoXcmE4Z3D1cwXXyVlZWMMQOu+eabb/jfAEUNR96Kz58/z3/hWV9fb+woADUGKhkbG+vv7zc345iZmVlaWvr1119JNL/qj7/T6aysrNQUMsa++eabw1bJxTVY1+l0UqgNVJIa3swLS9fowl6u6ezsZIwZSC7W19cZY52dnZjs7OxEJUc2D7jG0I6n4bDGIKh3w1erN/4INV9y586dzJbP3TU5dsGka4RiI9fgjzt37vBzqY/DL8+3h7m5udHR0bTrzs3NoUXxNeCP0dFRyCg/rskDeuM/NzenyWIqKytLS0tpMrVDyrtG09tKPSlp15WuOc5YyTUJQ4TDYcZYR0cHY+z69ev8rOvXr6ODU1xcXFRUNDo6mkgkiouLKysraZni4uK6ujr8UVRUFA6H+dWLi4upi4RCxtj58+eLioqKiooSiQRcEw6Hw+Hw+vq6sUMgCusavXtbWlpaWlpKk3z86+rq+N8ARSHOFP52u93nz5/n16XI07pFRUVutxtRpbMcDodnZ2cNRVdfeE13jbF9thB2cQ01fmJ2dpa/gqlhQED8MnDQ7Ows2kZxcfHt27f5yvlq+caD2mAiWAnaMoy1XINIwgW3b9/mA0Ue4c9CNq7h61xfXy8qKuro6EgkEqOjo/zvBJGDxIVXukYvdnENrlH+8u3o6ECeApD4JBIJDM3gDlxXV1dcXMzXNjo6WlpayhiDbtK6hs99eLAPMJcxrOUaPpKVlZV8tphIJGZnZxF5Xa7BLYHOWmVlJW92MDo6ihxH7w5L1wjFLq4Jh8O4tZIINE+I3G43Jfx0BRcVFWm6XaC0tBQL6HJN4qCHZexAElZzTSKRwBgNpEPJ4Pr6uuY3QLN3DXWdiLTx5Hu1gsIrXaMXG7kmcdDVR3+e7ytpwI2RT9c1QwAkoyNdw2fymiZnAMu5Bn5HCkmFmKTIHOYa6m8iblgG8krdkKbHRKNsupCuEYq9XJNIJIqLi9EtWl9fLy4u5hNyvneD4RVK+9E8rl+/Hg6HkRBBGRhuOH/+PBlE4xrMDYfDGEjW9Mj0YjnXIAKagSpIHMFEhzTVNRTk69evFxUV0TK4DSCkALcBt9tdWVmJ7BV1Ghghlq4RykeuKfTOZMLw7mFMlzyCSahhfX29rq4ubTaO9qB56oSuE65pKr99+zbf/+K3lUgkaEyhtLQ0bXdMF6qqzs/Pz8/P51iPsU0bW/H8+fNut1vT8js6OhCT27dv19XVIWIY39WsWFlZiXKK6ujoKEIKSPp0Kjs6Oow98tMVXukavVjJNa/zyOXLl4uKivK5xWworGsKffTCKaxrCn30wpGuSU9RUVFdXV0+t5gN0jVCka4RinRNGp49e3bmzJlnz57lbYtZIl0jFOkaoUjXWAnpGqFI1whFusZKSNcIRbpGKNI1VkK6RijSNUKRrrES0jVCka4RipVcs2N7CuuaQh+9cArrmkIfvXA+ck2hxZcJO5yMI6HGIOMvAl3hla7Ri3SNlZCuEYp0jVCka6yEdI1QpGuEIl1jJaRrhCJdIxTpGishXSMU6RqhSNdo+emnn1paWlZXVzH5888/t7S0/Pzzz5hcXV1taWn56aef8rMzGk6kay5fvnzr1i2a/Prrr7/++muavHXr1uXLlwVtWoN0jVCka7ScOXOGMdbS0sJPnj17FpMtLS2MsTNnzuRnZzScPNc8ePAAP3CjmSSbY/LBgwcitq5BukYoVnLNq7xw//79lpaWlZUVTM7MzLS0tMzMzPCT//nPf/KzMxoK6xoRR7SysvLVV1/dunWLSq5du3bt2jV+8quvvhKx6VQK65r8HGMBka6xEifPNccK6RqhfOSaQidZmbDDyTgSVVVjsVgsFpPxF4Gu8ErX6EW6JidWVlb4DpdopGtu3brFd7jMRbpGKNI1OXH//n3G2P379/OzOemaM2fOnDlzRlDl0jVCka7JCZnX5BmZ11gX6RorIV0jFOkaoVjJNdu2p7CuKfTRC6ewrin00QtHusZKSNcIRbpGKJZxzaeffqranlOnThXKNXaIv67wqqa65vTp04U+euGcOnXq/7um0B26o4lJYrFYLCbjL5RsQqGa6hqwYg+s4ZqFhYVCX4eFZ2FhQcZfHFmGV4Rr1tbWCmuBPLC2tmYN10gkxwQRrrEJ0jUSiQ6kawwjXSOR6EC6xjDSNRKJDqRrDCNdI5HoQLrGMNI1EokOpGsMI10jkehAusYwTLXBW9ISiVlI1xhGukYi0YF0jWGkayQSHUjXGIbZ4esvicQs6EvCQrdc68Hwj5hvICSSE0th260V+X+uscPXXxKJWaytrRW23VqR/wP4FStZhlb7oAAAAABJRU5ErkJggg==)
代码如下:
package leetcode;
import java.util.*;
import java.util.Map.Entry;
//思路:建立一个map映射关系,先对string排好序 -> 作为键 ,然后将map的value映射到List里面去~
//list的优点:可变!
public class GroupAnagrams {
public List<List<String>> groupAnagrams(String[] strs) {
List<List<String>> ans = new ArrayList<>();
Map<String, List<String>> map = new HashMap<>();
for (String str : strs) {
char[] ers = str.toCharArray();
Arrays.sort(ers);
String keyStr = String.valueOf(ers);
if (!map.containsKey(keyStr))
map.put(keyStr, new ArrayList<>()); //value就是新的list,然后加入原来的str
map.get(keyStr).add(str); //如果不是新的list,那么直接加入str
}
for (Entry<String, List<String>> entry : map.entrySet()) { //map的Entry是一个set,不重复,因为不同的entry,hashcode不同
//确保其唯一性
List<String> newvalues = entry.getValue();
Collections.sort(newvalues); //这里,map的key是一个set,而value是一个list,所以可以排序;
ans.add(newvalues);
}
return ans;
}
}
For example, given:
["eat", "tea", "tan", "ate", "nat", "bat"],
Return:
[ ["ate", "eat","tea"], ["nat","tan"], ["bat"] ]
Note:
For the return value, each inner list's elements must follow the lexicographic order.
All inputs will be in lower-case;
映射关系如下:
代码如下:
package leetcode;
import java.util.*;
import java.util.Map.Entry;
//思路:建立一个map映射关系,先对string排好序 -> 作为键 ,然后将map的value映射到List里面去~
//list的优点:可变!
public class GroupAnagrams {
public List<List<String>> groupAnagrams(String[] strs) {
List<List<String>> ans = new ArrayList<>();
Map<String, List<String>> map = new HashMap<>();
for (String str : strs) {
char[] ers = str.toCharArray();
Arrays.sort(ers);
String keyStr = String.valueOf(ers);
if (!map.containsKey(keyStr))
map.put(keyStr, new ArrayList<>()); //value就是新的list,然后加入原来的str
map.get(keyStr).add(str); //如果不是新的list,那么直接加入str
}
for (Entry<String, List<String>> entry : map.entrySet()) { //map的Entry是一个set,不重复,因为不同的entry,hashcode不同
//确保其唯一性
List<String> newvalues = entry.getValue();
Collections.sort(newvalues); //这里,map的key是一个set,而value是一个list,所以可以排序;
ans.add(newvalues);
}
return ans;
}
}
相关文章推荐
- 百灯判亮
- win8下安装wamp的各种问题
- K-Means算法的C语言实现
- 如何清理WindowsXp的临时文件
- iOS入门时常用的一些代码段——2
- 数的拆分(数的划分)
- 第八周项目1.2 多文件处理程序
- 数的拆分(数的划分)
- C语言每日小练(四)——勇者斗恶龙
- nginx 结合tomcat 做简单的反向代理
- 谋攻篇(一)
- PHP--URL编码函数浅析
- 《云计算和大数据时代网络技术揭秘》读后感
- iOS入门时常用的一些代码段——tabbar 按钮布局
- 服务器端与客户端使用Json进行数据交互
- Hanio问题
- 使用 matlab 数字图像处理(五)—— 双线性插值(Bilinear Interpolation)
- C++编程基础笔记章节六
- HydroCMS规范、图集查询系统设计
- hihocoder #1058 Combination Lock