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

      反转字符串是我们经常会遇到的一种面试题,Exp: 字符串 Hello 输出位 olleH

      FUN1:看到要求的第一反应差不多是循环存储字节后倒叙输出。代码如下

    public static string StrReverseWithArray(string str)
            {
                if (string.IsNullOrEmpty(str)) return str;
                int length = str.Length;
                char[] array = str.ToCharArray();
                for (int i = 0; i < length; i++)
                {
                    array[i] = str[length - 1 - i];
                }
                return new string(array);
            }

      FUN2:分析下 input顺序:H-e-l-l-o outPut顺序是 o-l-l-e-H;实际上满足了先进先出的顺序,这和栈的特性相同,所以可以定义栈 对栈进行压栈 出栈的操作 代码如下

    public static String StrReverseWithStack(String str)
            {
                if (string.IsNullOrEmpty(str)) return str;
                var stringStack = new Stack<char>();
                char[] array = str.ToCharArray();
                foreach (char t in array)
                {
                    stringStack.Push(t);
                }
                int length = str.Length;
                for (int i = 0; i < length; i++)
                {
                    array[i] = stringStack.Pop();
                }
                return new string(array);
            }

      FUN3:反转字符串实际上也是逆序遍历字符串 输出

     public static string StrReverseWithReverseLoop(String str)
            {
                if (string.IsNullOrEmpty(str)) return str;
                var sb = new StringBuilder();
                for (int i = str.Length - 1; i >= 0; i--)
                {
                    sb.Append(str[i]);
                }
                return sb.ToString();
            }

      FUN4:反转字符串也就是从收尾两端依次交换到中间位置的过程,我们可以用递归的方法来实现 只需要 做到

    • 找出递归结束的临界条件
    • 对针对于临界条件的不同的值做出不同的处理

    代码实现  

        public static String StrReverseWithRecursive(String str)
            {
                if (string.IsNullOrEmpty(str)) return str;
                int length = str.Length;
                if (length == 1)
                {
                    return str;
                }
                else
                {
                    return StrReverseWithRecursive(str.Substring(1)) + str[0];
                }
            }

    OK

      

  • 相关阅读:
    四则运算
    androidstdio导入工程报错
    日程代码任务1
    软件团队模式选择
    初识软件工程
    java数组中最大的子数组之和
    解决键盘布局错误(日文系统)
    固态硬盘的更替
    ZendDebugger的配置
    apache命令行启动
  • 原文地址:https://www.cnblogs.com/a164266729/p/5610948.html
Copyright © 2011-2022 走看看