Booking.com Interview Question

Swap two digits from an integer, the result should be the maximum. For example 3580 -> 8350

Interview Answers

Anonymous

Mar 23, 2017

Search a string inside a file line by line and return that particular line plus k previous line

Anonymous

Apr 3, 2017

public static int findMax(int start, int[] digits){ int max = Integer.MIN_VALUE; int id = 0; for (int i=start;i 0){ digits[k] = num % 10; num = num /10; k--; } for (int i=0;i

1

Anonymous

Apr 3, 2017

public static int findMax(int start, int[] digits){ int max = Integer.MIN_VALUE; int id = 0; for (int i=start;i 0){ digits[k] = num % 10; num = num /10; k--; } for (int i=0;i

Anonymous

Apr 3, 2017

public static void print(Integer number) { int num = number; int count =Integer.toString(num).length(); int[] digits = new int[count]; int k = count-1; while (num > 0){ digits[k] = num % 10; num = num /10; k--; } for (int i=0;i

Anonymous

Apr 23, 2017

private static int swap(int num) { String str = Integer.toString(num); int msd = str.charAt(0) - 48; int swapPos = -1; int maxDiff = -1; for(int counter = 1 ; counter = maxDiff) { maxDiff = diff; swapPos = counter; } } if(swapPos!=-1) { StringBuffer sb = new StringBuffer(str); sb.replace(0, 1, "" + str.charAt(swapPos)); sb.replace(swapPos, swapPos+1, ""+ msd); return Integer.parseInt(sb.toString()); } System.out.println(msd); return num; }

Anonymous

Jan 30, 2019

code <=

Anonymous

Jul 1, 2020

fun maximize(input: Int): Int { fun Int.pow(exponent: Int): Int = toDouble().pow(exponent).toInt() fun Int.digit(position: Int): Int = (this / 10.pow(position)).rem(10) var working = input var digits = 0 while (working > 0) { working /= 10 digits++ } return generateSequence(1) {it + 1} .takeWhile { it generateSequence(top - 1) {it - 1}.takeWhile { it >= 0 }.map { top to it } } .map { pair -> val top = input.digit(pair.first) val bottom = input.digit(pair.second) input - top * 10.pow(pair.first) - bottom * 10.pow(pair.second) + top * 10.pow(pair.second) + bottom * 10.pow(pair.first) } .max() ?: 0 }

Anonymous

Apr 3, 2017

Glassdoor somehow merges my comment. Correct solution: public static int findMax(int start, int[] digits){ int max = Integer.MIN_VALUE; int id = 0; for (int i=start;i