zoukankan      html  css  js  c++  java
  • 反转字符串

         最近在搞串口通信,读取出来的数据都是和仪表上显示相反。遂写了一下反转字符串的一些方法。其中异或运算来进行反转的效率最高。大家有更好的推荐,欢迎指出。

       /// <summary>
            /// 利用了字符串本身是数组的这一特性,然后倒序输出
            /// </summary>
            /// <param name="str"></param>
            /// <returns></returns>
    
            static string MethodOne(string str)
            {
                if (string.IsNullOrEmpty(str))
                {
                    return "";
                }
                StringBuilder sb = new StringBuilder();
                for (var i = str.Length - 1; i >= 0; i--)
                {
                    sb.Append(str[i]);
                }
                return sb.ToString();
            }
            /// <summary>
            /// 第二个方法
            /// </summary>
            /// <param name="str"></param>
            /// <returns></returns>
            static string MethodTwo(string str)
            {
                if (string.IsNullOrEmpty(str))
                {
                    return "";
                }
                var charArr = str.ToCharArray();
                for (var i = 0; i < charArr.Length / 2; i++)
                {
                    var temp = charArr[i];
                    charArr[i] = charArr[charArr.Length - 1 - i];
                    charArr[charArr.Length - 1 - i] = temp;
                }
                return new String(charArr);
            }
    
    
            /// <summary>
            /// 第三个方法(利用现有的实现)
            /// </summary>
            /// <param name="str"></param>
            /// <returns></returns>
            static string MethodThree(string str)
            {
                if (string.IsNullOrEmpty(str))
                {
                    return "";
                }
                return string.Join("", str.Reverse());
            }
    
            /// <summary>
            /// 第四种方法(利用栈)
            /// </summary>
            /// <param name="str"></param>
            /// <returns></returns>
            static string MethodFour(string str)
            {
                if (string.IsNullOrEmpty(str))
                {
                    return "";
                }
                Stack<char> strStack = new Stack<char>();
                for (var i = 0; i < str.Length; i++)
                {
                    strStack.Push(str[i]);
                }
                //难道在写一个循环弹出来吗
                var arr = new Char[str.Length];
                for (var i = 0; i < arr.Length; i++)
                {
                    arr[i] = strStack.Pop();
                }
                return new String(arr);
            }
    
            /// <summary>
            /// 方法五(利用异或)
            /// </summary>
            /// <param name="str"></param>
            /// <returns></returns>
            static string MethodFive(string str)
            {
                if (string.IsNullOrEmpty(str))
                {
                    return "";
                }
                var charArr = str.ToCharArray();
                for (var i = 0; i < charArr.Length / 2; i++)
                {
                    charArr[i] ^= charArr[charArr.Length - 1 - i]; //a=a^b   用a来暂存。
                    charArr[charArr.Length - 1 - i] ^= charArr[i];  //b=a     a^b^b=a
                    charArr[i] ^= charArr[charArr.Length - 1 - i];   //a=b     a^a^b=b  
                }
                return new String(charArr);
            }
  • 相关阅读:
    Q群
    shell脚本写host类型executable
    Oracle EBS 基于Host(主机文件)并发程序的开发
    ORALCE存储之ROWID
    HOW TO LINK THE TRANSACTION_SOURCE_ID TO TRANSACTION_SOURCE_TYPE_ID
    查找Form文件
    ORACLE column_type_id与实际type的对应关系
    OAF jar包引用产生错误
    计算Trial Balance的新方法(转)
    如何访问到XtreemHost上的站点?
  • 原文地址:https://www.cnblogs.com/gdouzz/p/10012301.html
Copyright © 2011-2022 走看看