Bloomberg LP Interview Question
InternsTeam: Financial Software Developer
Country: United States
Interview Type: Phone Interview
void rev(int l, int r)
{
char temp;
while(l<r)
{
temp = str[l];
str[l] = str[r];
str[r] = temp;
l++,r--;
}
}
void fun()
{
int start = 0, last = strlen(str)-1;
rev(start, last);
last = 0;
while(start < strlen(str))
{
while(str[last] != ' ' && str[last] != '\0')
last++;
rev(start, last-1);
while(str[last] == ' ' && str[last] != '\0')
last++;
start = last;
}
}
public static void main(String[] args) {
char[] l = "dog world car life".toCharArray();
System.out.println(l);
for(int i =0; i < l.length/2; i++){
char t = l[i];
l[i] = l[l.length - i - 1];
l[l.length - i-1] = t;
}
for(int j = 0, s = 0, e = 0; j <= l.length; j++){
if(j == l.length || l[j] == ' '){
e = j - 1;
for(; s < e;){
char t = l[s];
l[s] = l[e];
l[e] = t;
s++;
e--;
}
s = j + 1;
}
}
System.out.println(l);
}
#include<iostream>
using namespace std;
void rev(string &s)
{
int end = s.length() - 1;
char tmp;
for(int i=0 ; i < s.length() && i < end; i++, end--)
{
tmp = s[i];
s[i] = s[end];
s[end] = tmp;
}
//cout << s << endl;
}
int main()
{
string s = "This is a question" ;
string res;
cout << endl<<s<<endl;
rev(s);
string tmp;
for(int i=0 , j = 0;i <= s.length() ; i++)
{
if(s[i] == ' ' || i == s.length() )
{
rev(tmp);
res.append(tmp);
res.append(" ");
//resetting
tmp.clear();
j=0;
}
else
{
tmp += s[i];
}
}
cout << res << endl;
return 0;
}
public static void rev(String str){
//count the number of the words.
int count=1;
for(int i=0;i<str.length();i++){
if(str.charAt(i) == ' '){
count++;
}
}
String[] output = new String[count];
int index = 0; //the pointer to str
for(int i=0;i<count;i++){
char[] tempWord = new char[10];
int charCount = 0;
while(index<str.length()&&str.charAt(index) != ' '){
tempWord[charCount] = str.charAt(index);
charCount++;
index++;
}
while(index<str.length()&&str.charAt(index) == ' '){
index++;
}
output[i] = String.copyValueOf(tempWord);
}
int i=0;
int j=output.length-1;
while(i<j){
String temp;
temp = output[i];
output[i] = output[j];
output[j] = temp;
i++;
j--;
}
for(i =0;i<output.length;i++){
System.out.println(output[i]);
}
}
def reverseString(str):
tokens = str.split() #loses extra whitespace if any in string
iter = reversed(tokens)
newstr = ""
for token in iter:
newstr += token
newstr += ' '
return newstr
if __name__ == "__main__":
print reverseString("i am a cat")
#include<iostream>
using namespace std;
void rev_String(char* sptr, char* eptr)
{
while((eptr - sptr) > 0)
{
*sptr = *sptr + *eptr;
*eptr = *sptr - *eptr;
*sptr = *sptr - *eptr;
++sptr;
--eptr;
}
}
int main()
{
char str[] = "India Is Great";
rev_String(str,str+strlen(str)-1);
cout<<str<<endl;
char* sptr = NULL;
char* eptr = NULL;eptr = sptr = str;
while(*eptr != '\0')
{
++eptr;
if(*eptr == ' ')
{
rev_String(sptr,eptr-1);
sptr = eptr+1;
eptr = eptr+1;
}
if(*eptr == '\0')
{
rev_String(sptr,eptr-1);
break;
}
}
cout<<str<<endl;
}
public class ReverseSentence{
public static String reverseSentence(String sentenceString){
char[] rev = new char[sentenceString.length()];
char[] sentence = sentenceString.toCharArray();
//traverser for the back
int wordEnd = sentence.length -1;
int revPointer = 0;
for(int i = sentence.length - 1; i >= 0; i --){
if(sentence[i] == ' '){
int traverser = i + 1;
while(traverser <= wordEnd){
rev[ revPointer++ ] = sentence[ traverser++ ];
}
wordEnd = i - 1;
rev[revPointer++] = ' ';
}
}
//copy the first word!
int traverser = 0;
while(traverser <= wordEnd){
rev[revPointer ++] = sentence[traverser ++];
}
return new String(rev);
}
public static void main(String[] args){
String sentence = "We will we will rock you";
System.out.println(ReverseSentence.reverseSentence(sentence));
return;
}
}
void reverse(char *str,int start ,int len)
{
int i,j;
for(i=start, j=len-1 ;i<=j; i++,j--)
{
char temp;
temp=str[i];
str[i]=str[j];
str[j]=temp;
}
//puts(str);
}
void reverse_fun(char *str, int len)
{
char *ptr;
ptr=&str[0];
int start=0;
int last=0;
while( *ptr!='\0')
{
if(*ptr==' ')
{
reverse(str,start,last);
start=last+1;
}
ptr++;
last++;
}
if(!ptr=='\0')
{
reverse(str,start,len);
}
}
public class ReverseArray {
public static void main(String[] args) {
String s = "this is a test";
char[] array = s.toCharArray();
ReverseArray reverseArray = new ReverseArray();
int count = reverseArray.count(array);
StringBuffer[] string = new StringBuffer[count];
for(int k =0;k<string.length;k++){
string[k]= new StringBuffer();
}
int j =0;
for(int i =0;i<array.length;i++){
if(array[i]!= ' '){
string[j].append(array[i]);
}
else{
j++;
}
}
for(int g=0;g<string.length;g++){
System.out.print(" " +string[g]);
}
System.out.println();
for(int g=string.length-1;g>=0;g--){
System.out.print(" " +string[g]);
}
}
//counting the number of elements in the string
public int count(char[] array){
int count=0;
for(int i =0;i<array.length;i++){
if(array[i] == ' '){
count++;
}
}
return count+1;
}
}
With use of pointers it is very easy. Code below in C. Please provide your comments.
void reverse(char *str, int len)
{
char *p;
int i;
p = &str[len-1];
for(i=len-1; i>=0; i--)
{
if(str[i] == ' ')
{
printf("word : %s\n", (p+1));
str[i] = '\0';
}
p--;
}
printf("word : %s\n", ++p);
}
int main()
{
char in[30] = "this is a sentense";
reverse(in, strlen(in));
}
C++ Fans
void reverseSentence(string str)
{
stringstream strstream(str);
vector<string> splitVect;
string item;
while(getline(strstream,item,' '))
{
splitVect.push_back(item);
}
item.clear();
for(int i = splitVect.size()-1; i >= 0; i--)
{
item += splitVect[i] + ' '; //Its OK. I ignored the last extra space
}
cout<<item<<endl;
}
void reverseSentence(string str)
{
stringstream strstream(str);
vector<string> splitVect;
string item;
while(getline(strstream,item,' '))
{
splitVect.push_back(item);
}
item.clear();
for(int i = splitVect.size()-1; i >= 0; i--)
{
item += splitVect[i] + ' '; //I just ignored the last white space
}
cout<<item<<endl;
}
/* Reverse a sentence */
- Raj January 27, 2013#include<iostream>
#include<stack>
#include <stdio.h>
#include <string.h>
using namespace std;
void ReverseASentence(char* str){
char* pch;
stack<char*> strStack;
pch = strtok(str," ");
while(pch!= NULL){
strStack.push(pch);
pch = strtok(NULL," ");
}
while(!strStack.empty()){
cout<<strStack.top()<<" ";
strStack.pop();
}
}
int main(){
cout<<"Hello"<<endl;
char str[]="hello I am a Good Boy";
ReverseASentence(str);
}