• [LintCode] Two Strings Are Anagrams


    Write a method anagram(s,t) to decide if two strings are anagrams or not.

    Clarification

    What is Anagram?
    - Two strings are anagram if they can be the same after change the order of characters.

    Example

    Given s = "abcd", t = "dcab", return true.
    Given s = "ab", t = "ab", return true.
    Given s = "ab", t = "ac", return false.

    Challenge 

    O(n) time, O(1) extra space

    Solution: 

    This problem is very simple with hash maps. Store all characters and their frequencies from s, then check if t has exactly the same character set with 

    the same frequencies for each character.

     1 public class Solution {
     2     public boolean anagram(String s, String t) {
     3         if(s == null || t == null || s.length() != s.length()){
     4             return false;
     5         }
     6         int[] chars = new int[256];
     7         for(int i = 0; i < s.length(); i++){
     8             chars[s.charAt(i)]++;
     9         }
    10         for(int i = 0; i < t.length(); i++){
    11             if(chars[t.charAt(i)] == 0){
    12                 return false;
    13             }
    14             else{
    15                 chars[t.charAt(i)]--;
    16             }
    17         }
    18         return true;
    19     }
    20 }
  • 相关阅读:
    c# 不常用逻辑运算符
    c# 简单日志记录类 log

    最短路径
    A+B
    floyd 算法
    Kruskal 算法
    快排
    顺序表的逆排
    顺序表中多余元素的删除
  • 原文地址:https://www.cnblogs.com/lz87/p/6947755.html
Copyright © 2020-2023  润新知