then we can do it using queue.we keep on adding elements to the queue until we encountered delimiter.once a delimiter is encountered we just add a space in the queue ans skip all the delimiters...the process has to be repeated till we reach end of string
@Trent yes your code will work fine except the case when string ends with multiple delimiter then in that case you will never enter else statement.so you should put count condition at the end before adding str[z]='\0'.please check..:)
Given a Binary Tree, find vertical sum of the nodes that are in same vertical line. Print all sums through different vertical lines. Examples: 1 / \ 2 3 / \ / \ 4 5 6 7 The tree has 5 vertical lines Vertical-Line-1 has only one node 4 => vertical sum is 4 Vertical-Line-2: has only one node 2=> vertical sum is 2 Vertical-Line-3: has three nodes: 1,5,6 => vertical sum is 1+5+6 = 12 Vertical-Line-4: has only one node 3 => vertical sum is 3 Vertical-Line-5: has only one node 7 => vertical sum is 7 So expected output is 4, 2, 12, 3 and 7
delimiters includes just spaces and tab?
ReplyDelete@anonymous you can consider it to include just spaces and tab..:)
ReplyDeletethen we can do it using queue.we keep on adding elements to the queue until we encountered delimiter.once a delimiter is encountered we just add a space in the queue ans skip all the delimiters...the process has to be repeated till we reach end of string
ReplyDelete@anonymous this should be done in a single parsing without using any extra space..:)
ReplyDeleteUsing counter :
ReplyDeletechar *remove_ts(char *str)
{
int i,z,count;
for(count=i=z=0;str[i];i++){
if(str[i]=='\t'||str[i]==' ')
count++;
else{
if(count){
str[z]=' ';
z++;
}
str[z]=str[i];
z++; count=0;
}
}
str[z]='\0';
return str;
}
@Trent yes your code will work fine except the case when string ends with multiple delimiter then in that case you will never enter else statement.so you should put count condition at the end before adding str[z]='\0'.please check..:)
ReplyDeleteyes i forgot that the last can be a space!
ReplyDeletehere a fix before str[z]='\0' :
if(str[i-1]==' '){str[z]=' '; z++;}