US Interview Question
Software EngineersTeam: Amazon Prime
Country: United States
Interview Type: In-Person
text = 'Madam'
def reverse(text):
return text[::-1]
reverse(text)
What about above simple python code?
text = 'madam'
def reverse(text):
return text[::-1]
reverse(text)
what about above simple python code?
Console.WriteLine("The given string is: ");
string s = "Madam";
int length = s.Length;
int i = 0, j = length -1;
int count = 0;
bool _ispalin = true;
while(i<j)
{
if (s[i].ToString().ToUpper() == s[j].ToString().ToUpper())
{
// continue..
count++;
i++;
j--;
}
else
{
_ispalin = false;
break;
}
}
if (_ispalin)
{
Console.WriteLine("Palindrome");
}
else
{
Console.WriteLine("not palindrome");
}
import java.util.Stack;
public class StackDemo {
static void stackPush(Stack st, Character a){
st.push(new Character(a));
}
static void stackPop(Stack st){
}
static boolean isPalindrome(Stack st, int size)
{
int i=0;
for(i=0; i<=(size - (i+1)); i++)
{
System.out.println(" i size " + i + " " + (size - (i+1)));
System.out.println(" ---- " +st.elementAt(i) + " " + st.elementAt(size - (i+1)));
if(st.get(i).equals(st.elementAt(size - (i+1))))
{
}
else
return false;
}
return true;
}
public static void main(String args[])
{
Stack<Character> st = new Stack<Character>();
stackPush(st,'b');
stackPush(st,'a');
stackPush(st,'n');
stackPush(st,'a');
stackPush(st,'a');
stackPush(st,'n');
stackPush(st,'a');
stackPush(st,'b');
int sizeSt = st.size();
System.out.println(" Size " + sizeSt);
boolean result = isPalindrome(st,sizeSt);
System.out.println(" Result " + result);
}
}
import java.util.Stack;
public class StackDemo {
static void stackPush(Stack st, Character a){
st.push(new Character(a));
}
static void stackPop(Stack st){
}
static boolean isPalindrome(Stack st, int size)
{
int i=0;
for(i=0; i<=(size - (i+1)); i++)
{
System.out.println(" i size " + i + " " + (size - (i+1)));
System.out.println(" ---- " +st.elementAt(i) + " " + st.elementAt(size - (i+1)));
if(st.get(i).equals(st.elementAt(size - (i+1))))
{
}
else
return false;
}
return true;
}
public static void main(String args[])
{
Stack<Character> st = new Stack<Character>();
stackPush(st,'b');
stackPush(st,'a');
stackPush(st,'n');
stackPush(st,'a');
stackPush(st,'a');
stackPush(st,'n');
stackPush(st,'a');
stackPush(st,'b');
int sizeSt = st.size();
System.out.println(" Size " + sizeSt);
boolean result = isPalindrome(st,sizeSt);
System.out.println(" Result " + result);
}
}
import java.util.Stack;
public class StackDemo {
static void stackPush(Stack st, Character a){
st.push(new Character(a));
}
static void stackPop(Stack st){
}
static boolean isPalindrome(Stack st, int size)
{
int i=0;
for(i=0; i<=(size - (i+1)); i++)
{
System.out.println(" i size " + i + " " + (size - (i+1)));
System.out.println(" ---- " +st.elementAt(i) + " " + st.elementAt(size - (i+1)));
if(st.get(i).equals(st.elementAt(size - (i+1))))
{
}
else
return false;
}
return true;
}
public static void main(String args[])
{
Stack<Character> st = new Stack<Character>();
stackPush(st,'b');
stackPush(st,'a');
stackPush(st,'n');
stackPush(st,'a');
stackPush(st,'a');
stackPush(st,'n');
stackPush(st,'a');
stackPush(st,'b');
int sizeSt = st.size();
System.out.println(" Size " + sizeSt);
boolean result = isPalindrome(st,sizeSt);
System.out.println(" Result " + result);
}
}
import java.util.Stack;
public class StackDemo {
static void stackPush(Stack st, Character a){
st.push(new Character(a));
}
static void stackPop(Stack st){
}
static boolean isPalindrome(Stack st, int size)
{
int i=0;
for(i=0; i<=(size - (i+1)); i++)
{
System.out.println(" i size " + i + " " + (size - (i+1)));
System.out.println(" ---- " +st.elementAt(i) + " " + st.elementAt(size - (i+1)));
if(st.get(i).equals(st.elementAt(size - (i+1))))
{
}
else
return false;
}
return true;
}
public static void main(String args[])
{
Stack<Character> st = new Stack<Character>();
stackPush(st,'b');
stackPush(st,'a');
stackPush(st,'n');
stackPush(st,'a');
stackPush(st,'a');
stackPush(st,'n');
stackPush(st,'a');
stackPush(st,'b');
int sizeSt = st.size();
System.out.println(" Size " + sizeSt);
boolean result = isPalindrome(st,sizeSt);
System.out.println(" Result " + result);
}
}
import java.util.Stack;
public class checkPaliandromeUsingStack {
//public static void main(String[] args) {
Stack <Character> st = new Stack<Character>();
public boolean isPaliandrome(String input) {
for(char s:input.toCharArray()) {
st.push(new Character(s));
}
String returnString="";
while(!st.isEmpty()) {
returnString+=st.pop().toString();
}
return(returnString.equals(input)) ;
}
public static void main(String args[]){
checkPaliandromeUsingStack palStack=new checkPaliandromeUsingStack();
if(palStack.isPaliandrome("malayalam")) {
System.out.println("Paliandrome");
}
else {
System.out.println("Not a paliandrome");
}
}
}
import java.util.Stack;
public class checkPaliandromeUsingStack {
//public static void main(String[] args) {
Stack <Character> st = new Stack<Character>();
public boolean isPaliandrome(String input) {
for(char s:input.toCharArray()) {
st.push(new Character(s));
}
String returnString="";
while(!st.isEmpty()) {
returnString+=st.pop().toString();
}
return(returnString.equals(input)) ;
}
public static void main(String args[]){
checkPaliandromeUsingStack palStack=new checkPaliandromeUsingStack();
if(palStack.isPaliandrome("malayalam")) {
System.out.println("Paliandrome");
}
else {
System.out.println("Not a paliandrome");
}
}
}
//------------------------------------------------
import java.util.Stack;
public class checkPaliandromeUsingStack {
//public static void main(String[] args) {
Stack <Character> st = new Stack<Character>();
public boolean isPaliandrome(String input) {
for(char s:input.toCharArray()) {
st.push(new Character(s));
}
String returnString="";
while(!st.isEmpty()) {
returnString+=st.pop().toString();
}
return(returnString.equals(input)) ;
}
public static void main(String args[]){
checkPaliandromeUsingStack palStack=new checkPaliandromeUsingStack();
if(palStack.isPaliandrome("malayalam")) {
System.out.println("Paliandrome");
}
else {
System.out.println("Not a paliandrome");
}
}
}
public static bool IsPalindrome(string input)
{
if (input == null) return false;
if (input == string.Empty) return false;
if (input.Length == 1) return true;
if (input.Length == 2 && input[0] == input[1]) return true;
if (input.Length == 2 && input[0] != input[1]) return false;
var isit = false;
for (int i= 0; i < input.Length/2; i++)
{
if (input[i] != input[input.Length -1 - i]) isit = false;
else isit = true;
}
return isit;
}
You can just use a pointer to the first char and last char in the string. increment the first and decrement the last until they meet, comparing at each iteration. If they are not equal at any time, return False (is not palindrome).
in python:
This solution is O(n) runtime, and works in-place thus being preferable to methods which use a stack or a second string with the same runtime. This could be done in fewer lines if i used something like
but pointers are easier to visualize
- Javeed March 24, 2015Avoid using language-specific structures like stringbuilder if possible, and for problems like this you shouldn't use pre-existing methods to skip major portions of the logic they are testing you on. Using the stringbuilder's reverse method leaves you at the mercy of not knowing the space or time complexity, as well as leaving your interviewer underwhelmed.