Amazon Interview Question
Software Engineer / DevelopersCountry: India
Interview Type: In-Person
typedef enum {false, true} bool;
bool isPalindrome(char*str, size_t nStartIndex, size_t nEndIndex)
{
if (nStartIndex > nEndIndex) return false;
else if (nStartIndex == nEndIndex) return true;
else if (str[nStartIndex] == str[nEndIndex])
{
if (nEndIndex - nStartIndex == 1) return true;
else return isPalindrome(str, nStartIndex + 1, nEndIndex - 1);
}
else return false;
}
This is untested code and is solely my crack at the problem. The call from the caller has to be made as:
isPalindrome(str, 0, n); where n is the last valid index of the string. Please let me know if it is ok.
Amm if i declare a new pointer ... does it count as creating a "buffer"
heres my sol :
#include <stdio.h>
int main(int argc , char* argv[]){
//take argv[1] ...
char* temp = argv[1];
while(*argv[1] != '\0')
argv[1]++;
argv[1]--;
while(*temp != '\0'){
if(*temp != *argv[1]){
printf("%c %c no!\n",*temp,*argv[1]);
return 1;
}
temp++;
argv[1]--;
}
printf("yes!\n");
return 0;
}
#include<iostream>
#include<string.h>
int main()
{
char a[]="..A,,BC..DE.D.,C..BA...";
int i=0;
int j=strlen(a)-1;
int flag=0;
while(i<=j)
{
while(!(a[i]>='A' && a[i]<='Z'))
{
printf("I String %c\n",a[i]);
i++;
if(i>j)
{
flag=-1;
break;
}
}
if(flag==-1)
{
printf("Not a palindrome\n");
break;
}
else
{
while(!(a[j]>='A' && a[j]<='Z'))
{
printf("J String %c\n",a[j]);
j--;
if(j<i)
{
flag=-1;
break;
}
}
if(flag==-1)
{
printf("Not a palindrome\n");
break;
}
}
if(flag==0 && a[i]==a[j])
{
i++;
j--;
}
else
if(flag==0 && a[i]!=a[j])
{
flag=-1;
printf("Not a palindrome\n");
break;
}
}
if(flag==0)
{
printf("Palindrome\n");
}
system("PAUSE");
}
public class start {
public static void main(String[] args) {
String s = "ABXBAZ";
int forward_i = 0;
int backward_i = s.length() - 1;
int ispalindrome = 1;
while(forward_i < backward_i)
{
if(s.charAt(forward_i) != s.charAt(backward_i))
{
ispalindrome = -1;
break;
}
forward_i++;
backward_i--;
}
System.out.println(ispalindrome);
}
}
public class start {
public static void main(String[] args) {
String s = "ABXBAZ";
int forward_i = 0;
int backward_i = s.length() - 1;
int ispalindrome = 1;
while(forward_i < backward_i)
{
if(s.charAt(forward_i) != s.charAt(backward_i))
{
ispalindrome = -1;
break;
}
forward_i++;
backward_i--;
}
System.out.println(ispalindrome);
}
}
bool isPalindrome(char* s){
- Champ Coda October 13, 2011int l = strlen(s);
for(int i=0;i<(l/2); i++)
if (s[i] != s[l-(i+1)])
return false;
return true;
}