Use an array  count[26][2].
Here first col of each row represents the position of first instance of the 
alphabet,if any, else -1.
and second col of each row represents the position of last repeated 
instance of the alphabet, if any, else -1.

Now traverse the count array to find the row having both values positive.Of 
all these rows,the the row having minimum count[i][0]  can be found in 
linear time .
The alphabet corresponding to that position is the answer.

Algo :- 
int  count[26][2].
initialise each element of count to -1.
Now, start from pos 0 and
for each char c at position pos  in the string
       if ( count[c-'a'][0] == -1) 
           count[ c- 'a' ][0] = pos;
       else 
           count[ c- 'a' ][1] = pos;
int first_repeating_pos = INT_MAX;
for(int i=0;i<26;i++)
   if( count[i][0] >=0 && count[i][1] >=0)
        if(count[i][0] < first_repeating_pos)   
                        first_repeating_pos = count[i][0];
--
Navin Kumar Gupta
Final Year,B.Tech(Hons.)
Computer Science & Engg.
National Institute of Technology,Jamshedpur
Mobile - (+91)8285303045

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/algogeeks/-/l_FbUt4SBSIJ.
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