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);
}
}