[LeetCode]242.Valid Anagram&383. Ransom Note&389. Find the Difference

来源:互联网 发布:淘宝刷店铺流量 编辑:程序博客网 时间:2024/06/05 15:55

242.Valid Anagram
Easy

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.

Note:
You may assume the string contains only lowercase alphabets.

7ms:

 public boolean isAnagram(String s, String t) {       if(s.length()!=t.length())            return false;        int[] ca = new int[26];        for(Character c:s.toCharArray())            ca[c-'a']++;        for(Character c:t.toCharArray())            ca[c-'a']--;        for(int i:ca){            if(i!=0)                return false;        }        return true;    }

383 .Ransom Note
Easy


Given
 an 
arbitrary
 ransom
 note
 string 
and 
another 
string 
containing 
letters from
 all 
the 
magazines,
 write 
a 
function 
that 
will 
return 
true 
if 
the 
ransom 
 note 
can 
be 
constructed 
from 
the 
magazines ; 
otherwise, 
it 
will 
return 
false. 



Each 
letter
 in
 the
 magazine 
string 
can
 only 
be
 used 
once
 in
 your 
ransom
 note.

Note:
You may assume that both strings contain only lowercase letters.

canConstruct(“a”, “b”) -> false
canConstruct(“aa”, “ab”) -> false
canConstruct(“aa”, “aab”) -> true

18ms:

int[] cache = new int[26];        for(char x:magazine.toCharArray())            cache[x-'a']++;        for(char y:ransomNote.toCharArray()){            cache[y-'a']--;            if(cache[y-'a']<0)                return false;        }        return true;

15ms:

  public boolean canConstruct(String ransomNote, String magazine) {       char[] notes = ransomNote.toCharArray();        int index;        for (int i = 0; i < notes.length; i++) {            if (notes[i] == '.')                continue;            else if ((index = magazine.indexOf(notes[i])) < 0)                return false;            else {                int j = i;                while ((j = ransomNote.indexOf(notes[i], j + 1)) >= 0) {                    if ((index = magazine.indexOf(notes[i], index + 1)) < 0)                        return false;                    notes[j] = '.';                }            }        }        return true;    }

389 . Find the Difference
Easy

Given two strings s and t which consist of only lowercase letters. String t is generated by random shuffling string s and then add one more letter at a random position. Find the letter that was added in t.

Example:

Input:
s = “abcd”
t = “abcde”
Output: e
Explanation: ‘e’ is the letter that was added.

11ms:

public class Solution {    public char findTheDifference(String s, String t) {         char ss[] = s.toCharArray();         char tt[] = t.toCharArray();         int xx[] = new int[26];         for(Character c:tt)            xx[c-'a']++;         for(Character c:ss)            xx[c-'a']--;         int p = 0;         while(xx[p]==0)             p++;         return (char)('a'+p);    }}
0 0
原创粉丝点击