Intel Interview Question
bool is_anagrams(char * s1, char * s2)
{
if (s1 == NULL || s2 == NULL) {
return false;
}
map<char, int> count;
while(*s1 != '\0' && *s2 != '\0') {
count[*s1++]++;
count[*s2++]--;
}
if (*s1 != '\0' || *s2 != '\0') {
return false;
}
map<char, int>::iterator iter = count.begin();
for(; iter != count.end(); iter++) {
if (iter->second != 0) {
return false;
}
}
return true;
}
bool is_anagrams(char * s1, char * s2)
{
if (s1 == NULL || s2 == NULL)
{
return false;
}
typedef map<char, int> CharMap;
CharMap count;
int nLen1 = 0;
while (*s1 != '\0')
{
if (*s1!=' '/* or unwanted symbol like '''*/)
{
CharMap::iterator iter1 = count.find(*s1);
if (iter1 != count.end())
iter1->second++;
else
count[*s1] = 1;
nLen1++;
}
s1++;
}
int nLen2 = 0;
while (*s2 != '\0')
{
if (*s2!=' ' /* or unwanted symbol like '''*/)
{
CharMap::iterator iter2 = count.find(*s2);
if (iter2 != count.end())
iter2->second--;
else
return false;
nLen2++;
}
s2++;
}
if (nLen1 != nLen2)
return false;
CharMap::iterator iter = count.begin();
for(; iter != count.end(); iter++)
{
if (iter->second != 0)
{
return false;
}
}
return true;
}
#include<stdio.h>
#include<string.h>
int main()
{
char s1[] = "lease";
char s2[] = "easle";
int bitmap[256] = {0};
int len1, len2, i=0;
len1 = strlen(s1);
len2 = strlen(s2);
if(len1 != len2)
{
printf("Not anagrams");
return 0;
}
while(s1[i])
{
bitmap[s1[i]]++;
i++;
}
i =0;
while(s2[i])
{
if((bitmap[s2[i]]) == 0)
{
printf("Not anagram");
return 0;
}
else
bitmap[s2[i]]--;
i++;
}
printf("They are anagrams");
return 1;
}
Is that sarcasm? Cause you know it's not right...
s1 = "abc"
s2 = "bac"
sort each and compare them any way you want and it's not correct.
import java.util.HashMap;
class Anagram{
public static void main(String arg[]){
String s1= "laid";
String s2 = "dial";
int[] arr = new int[26];
char[] c1 = s1.toCharArray();
char[] c2 = s2.toCharArray();
for(int i=0;i<s1.length();i++){
arr[s1.indexOf(c1[i])]++;
}
for(int i=0;i<s2.length();i++){
arr[s2.indexOf(c1[i])]--;
}
for(int i=0;i<26;i++){
if(arr[i]!=0){
System.out.println("Not an Anagram "+i);
return;
}
}
System.out.println("Anagram");
}
}
sort them and then compare.
- lingrong April 01, 2010