Cracking the coding interview | Step-8


DAY 8: coding interview questions

Question 1:


FindStringCode
Crazy Zak has designed the below steps which can be applied on any given string (sentence) to produce a number.
STEP1. In each word, find the Sum of the Difference between the first letter and the last letter, second letter and the penultimate letter, and so on till the center of the word.
STEP2. Concatenate the sums of each word to form the result.
For example –
If the given string is “WORLD WIDE WEB”
STEP1. In each word, find the Sum of the Difference between the first letter and the last letter, second letter and the penultimate letter, and so on till the center of the word.
WORLD = [W-D]+[O-L]+[R] = [23-4]+[15-12]+[18] = [19]+[3]+[18] = [40]
WIDE = [W-E]+[I-D] = [23-5]+[9-4] = [18]+[5] = [23]
WEB = [W-B]+[E] = [23-2]+[5] = [21]+[5] = [26]
STEP2. Concatenate the sums of each word to form the result
[40] [23] [26]
[402326]
The answer (output) should be the number 402326.
NOTE1:The value of each letter is its position in the English alphabet system i.e. a=A=1, b=B=2, c=C=3, and so on till z=Z=26.
So, the result will be the same for “WORLD WIDE WEB” or “World Wide Web” or “world wide web” or any other combination of uppercase and lowercase letters.
IMPORTANT Note: In Step1, after subtracting the alphabets, we should use the absolute values for calculating the sum. For instance, in the below example, both [H-O] and [E-L] result in negative number -7, but the positive number 7 (absolute value of -7) is used for calculating the sum of the differences.
Hello = [H-O]+[E-L]+[L] = [8-15]+[5-12]+[12] = [7]+[7]+[12] = [26]
Assumptions: The given string (sentence) will contain only alphabet characters and there will be only one space character between any two consecutive words.
You are expected to help Zak, by writing a function that takes a string (sentence) as input, performs the above mentioned processing on the sentence and returns the result (number).
Example1:
input1 = “World Wide Web”
output1 = 402326
Example2:
input1 = “Hello World”
output1 = 2640
Explanation:
Hello = [H-O]+[E-L]+[L] = [8-15]+[5-12]+[12] = [7]+[7]+[12] = [26]
World = [W-D]+[O-L]+[R] = [23-4]+[15-12]+[18] = [19]+[3]+[18] = [40]
Result = Number formed by concatenating [26] and [40] = 2640

//Code:

import java.io.*;
import java.util.*;
class UserMainCode{
public int findStringCode(String input1){
String str=input1.toUpperCase();    
String word[]=str.split(" ");    
String value2="";    
for(int i=0;i<word.length;i++)    {     
int sum=0;     
for(int j=0;j<word[i].length()/2;j++)     {      
int first=word[i].charAt(j);      
int last=word[i].charAt(word[i].length()-1-j);       
sum+=Math.abs(first-last);     
}    
 if(word[i].length()%2!=0)     
sum+=(word[i].charAt(word[i].length()/2)-64);          
String value=Integer.toString(sum);         
  value2+=value;   
 }   
 return Integer.parseInt(value2);
 }}


Question 2: 


Get Code Through Strings: Farah is one of the few associates in Global Safe Lockers Corp Limited, who has access to the company’s exclusive locker that holds confidential information related to her division. The PIN to the locker gets changed every two days. Farah receives the PIN in the form of a string which she needs to decode to get the single-digit numeric PIN.
The numeric PIN can be obtained by adding the lengths of each word of the string to get the total length, and then continuously adding the digits of the total length till we get a single digit.
For example, if the string is “Wipro Technologies", the numeric PIN will be 8.
Explanation:
Length of the word “Wipro” = 5
Length of the word “Technologies” = 12
Let us add all the lengths to get the Total Length = 5 + 12 = 17
The Total Length = 17 , which is not a single-digit, so now let us continuously add all digits till we get a single digit i.e. 1+ 7 = 8
Therefore, the single-digit numeric PIN = 8
Farah approaches you to write a program that would generate the single-digit numeric PIN if the string is input into the program. Help Farah by writing the function (method) that takes as input a string input1 that represents the sentence, and returns the single-digit numeric PIN.
Assumptions: For this assignment, let us assume that the given string will always contain more than one word.
Let's see one more example -
If the given string is "The Good The Bad and The Ugly", the numeric PIN would be = 5
Explanation:
Let us add lengths of all words to get the Total Length = 3+4+3+3+3+3+4 = 23
Total Length = 23, which is not yet a single digit, so let us continue adding all digits of the Total Length, i.e. 2+3 = 5
Therefore, single-digit numeric PIN = 5

//Code:

import java.io.*;
import java.util.*;
class UserMainCode{
public int getCodeThroughString(String input1){
String word[]=input1.split(" ");  
int sum=0;  
for(int i=0;i<word.length;i++)  
{          
sum+=word[i].length();  
}   
return (1 + (sum-1) %9); 
}}










Question 3: 


Addition using Strings: Write a function that takes two numbers in string format and forms a string containing the sum (addition) of these two numbers.

        Assumption(s):
The input strings will contain only numeric digits
The input strings can be of any large lengths
The lengths of the two input string need not be the same
The input strings will represent only positive numbers
For example –
If input strings are “1234” and “56”, the output string should be “1290”
If input strings are “56” and “1234”, the output string should be “1290”
If input strings are “123456732128989543219” and “987612673489652”, the output string should be “123457719741663032871”
NOTE: In Java & C#, this logic can be easily implemented using BigInteger. However for the sake of enhancing your programming skills, you are recommended to solve this question without using BigInteger.


//Code:

import java.io.*;
import java.util.*;
class UserMainCode
{
public int addNumberString(String input1,String input2)
{
int carry=0;
  if(input1.length()<input2.length())
  {
    String temp="";
   temp=input1;
   input1=input2;
   input2=temp;
  }
  int len1=input1.length();
  int len2=input2.length();
  String str="";
  int j=len2-1;
  for(int i=0;i<len1;i++)
  {
   int a=Character.getNumericValue(input1.charAt(len1-1-i));
   int b=0;
   if(j>=0)
   {
    b=Character.getNumericValue(input2.charAt(j));
    j--;
   }
   int sum=a+b+carry;
   carry=sum/10;
   int init=sum%10;
   str=Integer.toString(init)+str;
   if(i==len1-1 && carry>0)
   {
              str=Integer.toString(carry)+str;
    }
  }
  return str;
 }
}

Post a Comment

0 Comments