• LeetCode OJ:Valid Anagram(有效字谜问题)


    Given two strings s and t, write a function to determine if t is an anagram of s.

    For example,
    s = "anagram", t = "nagaram", return true.
    s = "rat", t = "car", return false.

    题目的意思就是是否两个字符串之间可以通过颠倒次序来实现:

     1 class Solution {
     2 public:
     3     bool isAnagram(string s, string t) {
     4         int szS = s.size();
     5         int szT = t.size();
     6         if (szS != szT)return false;
     7         sort(s.begin(), s.end());
     8         sort(t.begin(), t.end());
     9         for(int i = 0; i < szS; ++i){
    10             if (s[i] != t[i])
    11                 return false;
    12         }
    13         return true;
    14     }
    15 };

     再看一遍题目感觉上面写的有点蠢了, 其实排序完成之后直接比较两个字符串是否相等就可以了,不过这种排序之后再比较的时间复杂度为O(NlogN),可以通过计数的方尝试将复杂度降低到O(N),两种方式的java代码如下所示:

    第一种:排序

    1 public class Solution {
    2     public boolean isAnagram(String s, String t) {
    3         char[] sArr = s.toCharArray();
    4         char[] tArr = t.toCharArray();
    5         Arrays.sort(sArr);
    6         Arrays.sort(tArr);
    7         return String.valueOf(sArr).equals(String.valueOf(tArr));
    8     }
    9 }

    第二种: 计数法

     1 public class Solution {
     2     public boolean isAnagram(String s, String t) {
     3         char [] count = new char [26];
     4         for(int i = 0; i < s.length(); ++i){
     5             count[s.charAt(i)-'a']++;
     6         }
     7         for(int i = 0; i < t.length(); ++i){
     8             count[t.charAt(i)-'a']--;
     9         }
    10         for(int i = 0; i < 26; ++i){
    11             if(count[i] != 0)
    12                 return false;
    13         }
    14         return true;
    15     }
    16 }

    计数法的runtime实际上比前面的排序方法号上很多,但是有一点吐槽一下,现在leetCode上面的runtime为什么都是java比c++要快上很多啊,java现在有这么快吗,有点不能理解啊。

  • 相关阅读:
    20170809上课笔记
    20170808上课笔记
    20170807上课笔记
    20170804上课笔记
    《备份恢复3》
    《备份恢复2》
    《SQL语句测试》
    《备份恢复1》
    《oracle管理7》
    《oracle管理6》
  • 原文地址:https://www.cnblogs.com/-wang-cheng/p/4887148.html
Copyright © 2020-2023  润新知