Click here to Skip to main content
15,912,578 members
Home / Discussions / C#
   

C#

 
GeneralRe: Homework Pin
Imran Adam22-Nov-07 6:34
Imran Adam22-Nov-07 6:34 
GeneralRe: Homework Pin
J4amieC22-Nov-07 6:29
J4amieC22-Nov-07 6:29 
JokeRe: Homework Pin
Luc Pattyn22-Nov-07 6:51
sitebuilderLuc Pattyn22-Nov-07 6:51 
GeneralRe: Homework Pin
Skippums22-Nov-07 8:06
Skippums22-Nov-07 8:06 
AnswerRe: returning a string in reverse Pin
m@u22-Nov-07 6:33
m@u22-Nov-07 6:33 
GeneralRe: returning a string in reverse Pin
Imran Adam22-Nov-07 6:47
Imran Adam22-Nov-07 6:47 
GeneralRe: returning a string in reverse Pin
Jason Lepack (LeppyR64)22-Nov-07 6:50
Jason Lepack (LeppyR64)22-Nov-07 6:50 
GeneralRe: returning a string in reverse Pin
Skippums22-Nov-07 7:16
Skippums22-Nov-07 7:16 
I prefer the following...

public void Main()
{
    string str = "I will do my homework on my own";
    IntPtr strPtr = Marshal.StringToHGlobalUni(str);
    IntPtr resPtr = ReverseString(strPtr);
    string res = Marshal.PtrToStringUni(result);
    Marshal.FreeHGlobal(strPtr);
    Marshal.FreeHGlobal(resPtr);
    Console.WriteLine(str);
    Console.WriteLine(res);
}


public IntPtr ReverseString(IntPtr strPtr)
{
    string str = Marshal.PtrToStringUni(strPtr);
    char[] strAsCharArray = new char[str.Length];
    for (int i = 0; i < str.Length; ++i)
    {
        strAsCharArray[i] = str[0];
        str = str.Substring(1);
    }
    StringBuilder sb = new StringBuilder(strAsCharArray.Length);
    string res = string.Empty;
    for (int i = 0; i < str.Length; i += 2)
    {
        string next = string.Empty;
        for (int j = 1; j >= 0; --j)
        {
            if (i + j == str.Length)
                continue;
            char c = strAsCharArray[i + j];
            next.Insert(0, c.ToString());
            res.Insert(1 - j, c.ToString());
        }
        sb.Append(next);
    }
    str = sb.ToString();
    IntPtr rval = Marshal.StringToHGlobalUni(res);
    return rval;
}


This is O(n), which is as fast as this operation can be done given how strings are implemented in the system (with a double-linked-list, it can be O(1)). Hope this helps.

Jeff
GeneralRe: returning a string in reverse Pin
Luc Pattyn22-Nov-07 7:25
sitebuilderLuc Pattyn22-Nov-07 7:25 
GeneralRe: returning a string in reverse Pin
Imran Adam22-Nov-07 7:45
Imran Adam22-Nov-07 7:45 
GeneralRe: returning a string in reverse Pin
Skippums22-Nov-07 8:04
Skippums22-Nov-07 8:04 
AnswerRe: returning a string in reverse Pin
Guffa22-Nov-07 9:19
Guffa22-Nov-07 9:19 
GeneralRe: returning a string in reverse Pin
Skippums22-Nov-07 8:17
Skippums22-Nov-07 8:17 
AnswerRe: returning a string in reverse Pin
Andrei Ungureanu22-Nov-07 8:36
Andrei Ungureanu22-Nov-07 8:36 
GeneralRe: returning a string in reverse [modified] Pin
Luc Pattyn22-Nov-07 9:08
sitebuilderLuc Pattyn22-Nov-07 9:08 
AnswerRe: returning a string in reverse Pin
Guffa22-Nov-07 9:25
Guffa22-Nov-07 9:25 
GeneralRe: returning a string in reverse Pin
Luc Pattyn22-Nov-07 9:57
sitebuilderLuc Pattyn22-Nov-07 9:57 
AnswerRe: returning a string in reverse Pin
Pete O'Hanlon22-Nov-07 10:29
mvePete O'Hanlon22-Nov-07 10:29 
GeneralRe: returning a string in reverse Pin
Guffa22-Nov-07 12:44
Guffa22-Nov-07 12:44 
GeneralRe: returning a string in reverse Pin
Pete O'Hanlon22-Nov-07 21:58
mvePete O'Hanlon22-Nov-07 21:58 
GeneralRe: returning a string in reverse Pin
Guffa23-Nov-07 10:32
Guffa23-Nov-07 10:32 
Questioncomparing objects Pin
damianrda22-Nov-07 5:24
damianrda22-Nov-07 5:24 
AnswerRe: comparing objects Pin
Andrei Ungureanu22-Nov-07 8:47
Andrei Ungureanu22-Nov-07 8:47 
Questionwhy chart fail to come out Pin
angels77722-Nov-07 4:36
angels77722-Nov-07 4:36 
AnswerRe: why chart fail to come out Pin
Andrei Ungureanu22-Nov-07 4:40
Andrei Ungureanu22-Nov-07 4:40 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.