FindStartIndex(char[] a)
{
    int start = 0;
    int current = 1;
    while(current < a.Length)
    {
        if(a[current] < a[start])
        {
            start = current;
            ++current;
        }else if(a[current] > a[start])
        {
            ++current;
        }else //a[current] == a[start]
        {
            int lookforward = 0;
            int startnext = start;
            int currentnext = current;
            while(startnext != currnet && a[startnext] == a[currentnext])
            {
                ++lookforward;
                startnext = (start + lookforward) % a.Length;
                currentnext = (current + lookforward) % a.Length;
            }//finish when compare to current head or there is different
            if(startnext == current || a[startnext] < a[currentnext])
            {
                if(current > currentnext)
                {
                    break;
                }else
                {
                    current = currentnext+1;
                }
            }
            else //a[startnext] > a[currentnext]
            {
                start = current;
                if(current < currentnext)
                {
                    current = currentnext + 1;
                }else
                {
                    break;
                }
            }
        }
    }
    return start;
}

On Fri, Jan 14, 2011 at 12:45 AM, radha krishnan <
radhakrishnance...@gmail.com> wrote:

> There s O(n) solution for this :)
>
> On Fri, Jan 14, 2011 at 2:13 PM, radha krishnan
>  <radhakrishnance...@gmail.com> wrote:
> > append the string to original string and
> > index=answer of that spoj problem
> > now u can ouput the string from index to index+strlen(originalstring)-1
> >
> > On Fri, Jan 14, 2011 at 2:12 PM, radha krishnan
> > <radhakrishnance...@gmail.com> wrote:
> >> wow
> >> This s a spoj problem
> >> http://www.spoj.pl/problems/MINMOVE/
> >>
> >> On Fri, Jan 14, 2011 at 1:40 PM, snehal jain <learner....@gmail.com>
> wrote:
> >>> Write the code to find lexicographic minimum in a circular array, e.g.
> >>> for the array
> >>> BCABDADAB, the lexicographic mininum is ABBCABDAD.
> >>>
> >>> --
> >>> 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<algogeeks%2bunsubscr...@googlegroups.com>
> .
> >>> For more options, visit this group at
> http://groups.google.com/group/algogeeks?hl=en.
> >>>
> >>>
> >>
> >
>
> --
> 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<algogeeks%2bunsubscr...@googlegroups.com>
> .
> For more options, visit this group at
> http://groups.google.com/group/algogeeks?hl=en.
>
>

-- 
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