Amazon Interview Question for Software Engineers


Team: Seattle
Country: United States
Interview Type: Phone Interview




Comment hidden because of low score. Click to expand.
1
of 1 vote

public String reverse(String str){
if(str == null || s.length()<=1)
return str;
return (reverse(str.subString(1))+str.charAt(0);
}

- Anonymous September 02, 2016 | Flag Reply
Comment hidden because of low score. Click to expand.
1
of 1 vote

public static class MyAlgorithms 
{
    public static void Reverse(char[] s, int startIndex, int endIndex) 
    {
        if (startIndex >= endIndex)
        {
           return;
        }

        var firstLetter = s[startIndex];
        var lastLetter = s[endIndex];
        s[startIndex] = lastLetter;
        s[endIndex] = firstLetter;
        Reverse(s, ++startIndex, --endIndex);
    }
}

- JC315 September 02, 2016 | Flag Reply
Comment hidden because of low score. Click to expand.
0
of 0 vote

String in java are immutable, it doesn't make sense to create a new copy of the string at every recursion.

Try:

public class Reverse {

  public static String recursiveStringReverse(String input) {
    return recursiveStringReverse(input.toCharArray(), 0, input.length()-1);
  }
  public static String recursiveStringReverse(char[] input, int first, int last) {
  if(first >= last) {
    return new String(input);
  } else {
    char temp = input[first];
    input[first] = input[last];
    input[last] = temp;
    return recursiveStringReverse(input, first+1, last-1);
  }
  }

  public static void main(String[] args) {
    System.out.println(Reverse.recursiveStringReverse("input"));
  }
}

- Anonymous September 03, 2016 | Flag Reply
Comment hidden because of low score. Click to expand.
0
of 0 vote

public class ReverseStringUsingRecursion {

static StringBuilder sb=new StringBuilder();

public static void main(String[] args) {
// TODO Auto-generated method stub
String s="mrwayne";
reverseString(s,s.length());
System.out.println(sb.toString());

}

private static void reverseString(String str,int length)
{
if(length==0)
return;
sb.append(str.charAt(--length));
reverseString(str, length);

}

}

- Anonymous September 03, 2016 | Flag Reply
Comment hidden because of low score. Click to expand.
0
of 0 vote

public static string Reverse(string s)
{
	if (string.IsNullOrEmpty(s))
		return s;
	
	var sb = new StringBuilder();
	Reverse(s, sb, 0);
	return sb.ToString();
}

private static void Reverse(string s, StringBuilder sb, int index)
{
	if (index == s.Length)
		return;
	
	Reverse(s, sb, index+1);
	sb.Append(s[index]);
}

- hnatsu September 08, 2016 | Flag Reply
Comment hidden because of low score. Click to expand.
0
of 0 vote

public static void Recursion(String s){
		String rev = Recursion(s, "", s.length()-1);
		System.out.println(rev);
	}
	public static String Recursion(String s, String rev, int index){
		if(index < 0 )
			return rev;
		
		return Recursion(s, rev+s.charAt(index), index-1);
	}

- Tarun September 10, 2016 | Flag Reply
Comment hidden because of low score. Click to expand.
0
of 0 vote

public static void Recursion(String s){
		String rev = Recursion(s, "", s.length()-1);
		System.out.println(rev);
	}
	public static String Recursion(String s, String rev, int index){
		if(index < 0 )
			return rev;
		
		return Recursion(s, rev+s.charAt(index), index-1);
	}

- tarun.mitra.201288 September 10, 2016 | Flag Reply
Comment hidden because of low score. Click to expand.
0
of 0 vote

void SwapAndMoveToTheMiddle(char* pA, char* pB)
{
	char cTemp;

	if (pA >= pB) return;

	cTemp = *pA;
	*pA = *pB;
	*pB = cTemp;
	++pA;
	--pB;
	SwapAndMoveToTheMiddle(pA, pB);
}
//.............................................................................................................
void ReverseStringWithRecursion(char* pOurString)
{
	char *pBegin, *pEnd;

	pBegin = pOurString;
	while (*pOurString)
		++pBegin;
	pEnd = pBegin;
	pBegin = pOurString;

	SwapAndMoveToTheMiddle(pBegin, pEnd);
}

- sergey.a.kabanov September 18, 2016 | Flag Reply
Comment hidden because of low score. Click to expand.
0
of 0 vote

string reverse(string s, int k){
	if(k>=s.size()/2){
		return s;
	}
	char tmp = s[k];
	s[k] = s[s.size()-k-1];
	s[s.size()-k-1] = tmp;
	return reverse(s, k+1);
}

- R-Tur October 02, 2016 | Flag Reply
Comment hidden because of low score. Click to expand.
0
of 0 vote

public class StringReverseRecursion {


public static char[] Reverse(int start,int end,char[] temp,String s)
{
if(start>=end)
{
if(start==end)
{
temp[start]=s.charAt(end);
}
return temp;
}
temp[end]=s.charAt(start);
temp[start]=s.charAt(end);
return Reverse(start+1, end-1, temp, s);
}

public static void main(String[] args) {

Scanner sc=new Scanner(System.in);
String input=sc.next();
char[] array=new char[input.length()+1];
char[] result=Reverse(0, input.length()-1, array,input);
String s1=String.copyValueOf(result);
System.out.println(s1);
}

}

- Anonymous October 11, 2016 | Flag Reply
Comment hidden because of low score. Click to expand.
0
of 0 vote

Swift implementation

func reverse(s:String)->String{
    var chars = Array(s.characters)
    var reversed = String()
    
    func getLastC(s:String, pos:Int)->String{
        var chars = Array(s.characters)
        reversed.append(chars[pos])
        if pos == 0{
            return String(chars[0])
        }
        return getLastC(s: s, pos: pos - 1)
    }
    getLastC(s: s, pos: s.characters.count - 1)
    return reversed
}

- sunaj December 17, 2016 | Flag Reply
Comment hidden because of low score. Click to expand.
0
of 0 vote

Swift implementation

func reverse(s:String)->String{
    var chars = Array(s.characters)
    var reversed = String()
    
    func getLastC(s:String, pos:Int)->String{
        var chars = Array(s.characters)
        reversed.append(chars[pos])
        if pos == 0{
            return String(chars[0])
        }
        return getLastC(s: s, pos: pos - 1)
    }
    getLastC(s: s, pos: s.characters.count - 1)
    return reversed
}

- sunaj December 17, 2016 | Flag Reply
Comment hidden because of low score. Click to expand.
0
of 0 vote

void reverse(char* s, int size, int i) {
    if(i >= size/2) return ;
    char c = s[i];
    s[i] = s[size-1-i];
    s[size-1-i] = c;
    reverse(s, size, ++i);
}

- Anonymous January 03, 2017 | Flag Reply


Add a Comment
Name:

Writing Code? Surround your code with {{{ and }}} to preserve whitespace.

Books

is a comprehensive book on getting a job at a top tech company, while focuses on dev interviews and does this for PMs.

Learn More

Videos

CareerCup's interview videos give you a real-life look at technical interviews. In these unscripted videos, watch how other candidates handle tough questions and how the interviewer thinks about their performance.

Learn More

Resume Review

Most engineers make critical mistakes on their resumes -- we can fix your resume with our custom resume review service. And, we use fellow engineers as our resume reviewers, so you can be sure that we "get" what you're saying.

Learn More

Mock Interviews

Our Mock Interviews will be conducted "in character" just like a real interview, and can focus on whatever topics you want. All our interviewers have worked for Microsoft, Google or Amazon, you know you'll get a true-to-life experience.

Learn More