0(n) time o(1) spcae(Dont be too harsh please I am just using 64 bytes of
extra space)



#include<bitset>
#include<iostream>
#include<queue>
using namespace std;
int main()
{
char answer;
bitset<26> charset;
bitset<26> repeat;
char a[]={'s','a','s','a','b','v','s','a'};
#ifdef TEST
gets(a);
#endif
int i;
for(i=0;a[i]!='\0';i++){
if(charset.test(a[i]-'a')) {
repeat.set(a[i]-'a');
}
charset.set(a[i]-'a');
}
for(int j=0;j<i;j++)
{
if(!repeat.test(a[j]-'a')){
cout<<a[j]<<endl;
return 0;
}
}
cerr<<"No non repeating Character"<<endl;
 return 0;
}

On Tue, Jul 19, 2011 at 2:30 AM, Dumanshu <duman...@gmail.com> wrote:

> @Sagar: yours is right. but u didn't specify the extra work required
> to get the first character non repeating. See the last line of your
> solution.
>
> @Varun: I think we can do this in "single traversal" without bit
> vectors x,y but just an array[26], taking chars to be 26.
> heres how-
> take a variable count =0; arr[26] = {0};
> traverse the string
> for each character,
>
> for(i=0;i<str.length;i++)
> {
>   if(arr[str[i]])
>      arr[str[i]] = -1;
>   else
>      arr[str[i]] = (++count);
> }
> set min = str.length;
> index =0;
>
> for(i=0;i<26;i++)
> {
>   if(arr[i] && arr[i]!=-1)
>       if(min > arr[i])
>       {
>            min = arr[i];
>             index = i;
>       }
> }
>
> now print i as %c, its the answer.
>
>
>
> On Jul 18, 10:03 pm, sagar pareek <sagarpar...@gmail.com> wrote:
> > @dumanshu
> > first read my soution just above yours   :)
> >
> >
> >
> >
> >
> > On Mon, Jul 18, 2011 at 10:21 PM, Dumanshu <duman...@gmail.com> wrote:
> > > heres my solution with TC O(n) and SC O(26)
> > > input string str
> > > int arr[26] = {0};
> > > traverse the string, character by character and increment the
> > > corresponding counter.
> > > i.e. arr[str[i]]++;
> >
> > > Now traverse the string again and print out the first character
> > > encountered whose arr[str[i]] == 1;
> >
> > > On Jul 18, 9:20 pm, sagar pareek <sagarpar...@gmail.com> wrote:
> > > > Very good solution :-  but space complexity = O(26)
> >
> > > > take integer array arr[0-25] and initialise it with 0 by taking it
> static
> > > > logic is that we have only 26 characters so if i want to map
> character
> > > 'a'
> > > > with 0th position of arr[] then it can be done as atoi('a')-97.
> > > > so whenever we encounter any character say str[i] (where str is array
> of
> > > > given string) then it can be incremented as arr[atoi(str[i])-97]++
> > > > so traverse the whole str[] and increment the corresponding values .
> > > > At the end those characters which never encounter have values 0 in
> arr ,
> > > > which encounter only once have values 1 and more than once have
> values>1.
> > > > at the end traverse the whole arr[] and find out the corresponding
> > > character
> > > > as itoa(arr[i]+97) :) :)
> >
> > > > But we have to do extra work to find the first character which
> repeats
> > > only
> > > > once
> >
> > > > On Mon, Jul 18, 2011 at 8:09 PM, hary rathor <harry.rat...@gmail.com
> >
> > > wrote:
> > > > > can we use bit vector ?
> > > > > because  by  do it we need just 32 bits of one extra variable .
> >
> > > > >  --
> > > > > You received this message because you are subscribed to the Google
> > > Groups
> > > > > "Algorithm Geeks" group.
> > > > > To post to this group, send email to algogeeks@googlegroups.com.
> > > > > To unsubscribe from this group, send email to
> > > > > algogeeks+unsubscr...@googlegroups.com.
> > > > > For more options, visit this group at
> > > > >http://groups.google.com/group/algogeeks?hl=en.
> >
> > > > --
> > > > **Regards
> > > > SAGAR PAREEK
> > > > COMPUTER SCIENCE AND ENGINEERING
> > > > NIT ALLAHABAD
> >
> > > --
> > > You received this message because you are subscribed to the Google
> Groups
> > > "Algorithm Geeks" group.
> > > To post to this group, send email to algogeeks@googlegroups.com.
> > > To unsubscribe from this group, send email to
> > > algogeeks+unsubscr...@googlegroups.com.
> > > For more options, visit this group at
> > >http://groups.google.com/group/algogeeks?hl=en.
> >
> > --
> > **Regards
> > SAGAR PAREEK
> > COMPUTER SCIENCE AND ENGINEERING
> > NIT ALLAHABAD- Hide quoted text -
> >
> > - Show quoted text -
>
> --
> You received this message because you are subscribed to the Google Groups
> "Algorithm Geeks" group.
> To post to this group, send email to algogeeks@googlegroups.com.
> To unsubscribe from this group, send email to
> algogeeks+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/algogeeks?hl=en.
>
>


-- 
Saurabh Singh
B.Tech (Computer Science)
MNNIT ALLAHABAD

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to algogeeks@googlegroups.com.
To unsubscribe from this group, send email to 
algogeeks+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.

Reply via email to