现在的位置: 首页 > 综合 > 正文

字符串反转

2013年09月05日 ⁄ 综合 ⁄ 共 734字 ⁄ 字号 评论关闭
  • 使用栈
    public static string ReverseByStack(this string original)
    {
        Stack<char> stack = new Stack<char>();
        foreach (char ch in original)
        {
            stack.Push(ch);
        }
        char[] c = new char[original.Length];
        for (int i = 0; i < original.Length; i++)
        {
            c[i] = stack.Pop();
        }
        return new string(c);
    }
  • 使用XOR
    public static string ReverseByXor(this string original)
    {
        char[] charArray = original.ToCharArray();
        int l = original.Length - 1;
        for (int i = 0; i < l; i++, l--)
        {
            charArray[i] ^= charArray[l];
            charArray[l] ^= charArray[i];
            charArray[i] ^= charArray[l];
        }
        return new string(charArray);
    }
  • 使用指针
    public static unsafe string ReverseByPointer(this string original)
    {
        fixed (char* pText = original)
        {
            char* pStart = pText;
            char* pEnd = pText + original.Length - 1;
            for (int i = original.Length / 2; i >= 0; i--)
            {
                char temp = *pStart;
                *pStart++ = *pEnd;
                *pEnd-- = temp;
            }
    
            return original;
        }
    }

抱歉!评论已关闭.