2020年4月17日 星期五

[LeetCode] 242. Valid Anagram 解題思路* (Easy)



這題要比出兩個陣列是否相等,即使陣列裡面的字元排序不一樣也算相等



LeetCode 題目連結

 

https://leetcode.com/problems/valid-anagram/

 

題目


Given two strings s and , write a function to determine if t is an anagram of s.
Example 1:
Input: s = "anagram", t = "nagaram"
Output: true
Example 2:
Input: s = "rat", t = "car"
Output: false

Accept 作法

我用了一個不是很簡短的方法,後來想想這樣對我最直覺。


Runtime: 21 ms
Memory: 40.7 MB

Java 程式碼

  1. class Solution {
  2. public boolean isAnagram(String s, String t) {
  3.  
  4. if(s.length() != t.length()){
  5. return false;
  6. }
  7.  
  8. if(s.length() == 0 && t.length() == 0){
  9. return true;
  10. }
  11.  
  12. HashMap setS = getStringMap(s);
  13. HashMap setT = getStringMap(t);
  14. boolean isAnagram = false;
  15. for(String keyS : setS.keySet()) {
  16. if(setT.containsKey(keyS)){
  17. Integer valueT = setT.get(keyS);
  18. if(((int)valueT) == ((int)setS.get(keyS))){
  19. isAnagram = true;
  20. }else{
  21. isAnagram = false;
  22. break;
  23. }
  24. }else{
  25. isAnagram = false;
  26. break;
  27. }
  28. }
  29. return isAnagram;
  30. }
  31. public HashMap getStringMap(String s){
  32. HashMap set = new HashMap();
  33. for(int i = 0;i < s.length();i++){
  34. if(!set.containsKey(String.valueOf(s.charAt(i)))){
  35. set.put(String.valueOf(s.charAt(i)),1);
  36. }else{
  37. int count = (int)set.get(String.valueOf(s.charAt(i)));
  38. count+=1;
  39. set.put(String.valueOf(s.charAt(i)),count);
  40. }
  41. }
  42. return set;
  43. }
  44. }


 

更多 LeetCode 相關資源

 

複習程式面試書籍


除了 LeetCode 練習外,我也入手了這本,題庫來自真正的面試,並非摘自教科書。它們反映出頂尖公司真正會出的題目,你可以藉此做好充分準備
需要的話可以看看,寫得很仔細。





書名:提升程式設計師的面試力:189道面試題目與解答




相關 LeetCode文章一律會放在 程式解題 標籤分類,歡迎持續追蹤。


沒有留言:

張貼留言