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

    /*
    标题:反转串
    内容:
    我们把“cba”称为“abc”的反转串。
    求一个串的反转串的方法很多。下面就是其中的一种方法,代码十分简洁(甚至有些神秘),
    请聪明的你通过给出的一点点线索补充缺少的代码。

    把填空的答案(仅填空处的答案,不包括题面)存入考生文件下对应题号的“解答.txt”中即可。

    public static String reverseString(String x)
    {
    if(x==null || x.length()<2) return x;
    return ____________________ + x.charAt(0);
    }


    */

     1 class pro04 {
     2     public static void main (String[] args){
     3         System.out.println(fff.reverseString("cba"));
     4     }
     5     
     6     public static String reverseString(String x)
     7         {
     8             if(x==null || x.length()<2) return x;
     9             return reverseString(x.substring(1)) + x.charAt(0);
    10         }
    11 }

    /*

    递归题目总是让人有些烦躁,不静下心来分析,很难理解其中的逻辑关系,
    首先,“cba”的反串为“abc”,
    我们把“cba”带入reverseString(String x)中,
    方法应该执行return ____________________ + x.charAt(0)一句,
    而此时的x.charAt(0) = c,
    所以 “____________________” 应返回“ab”,
    那么如何让“____________________” 返回"ab"呢?
    单由一句简单的代码肯定做不了这么复杂的工作,
    所以“____________________”处肯定是递归调用了,
    递归只能调用自己了,
    但是everseString(String x)中参数应该怎么传呢?


    我们把上边分析的过程看做递归的第一层,则第一层返回的是:"____________________ + x.charAt(0)",
    而到了第二层,因为不满足第一句,"if(x==null || x.length()<2)"
    所以仍然返回第二句,"____________________ + x.charAt(0)";
    而第一层“____________________”处为“ab”,
    所以第二层,x.charAt(0)应为“b”;
    到了第三层,就满足了"if(x==null || x.length()<2)",所以返回“a”;

    理清了思路之后,我们发现“____________________”处应为“x”本身的一个去掉第一个字母的字串,
    然后我就套了一个函数,试一下,居然对了,
    reverseString(x.substring(1))
    reverseString(x.substring(1,x.length())) 也是对的
    代码填空题,有的时候理不清思路,套一套答案也是一种方法,

    其中:
    public String substring(int beginIndex)

    返回一个新的字符串,它是此字符串的一个子字符串。该子字符串始于指定索引处的字符,一直到此字符串末尾。
    例如:

    "unhappy".substring(2) returns "happy"
    "Harbison".substring(3) returns "bison"
    "emptiness".substring(9) returns "" (an empty string)

    public String substring(int beginIndex,int endIndex)

    返回一个新字符串,它是此字符串的一个子字符串。该子字符串从指定的 beginIndex 处开始,一直到索引 endIndex - 1 处的字符。因此,该子字符串的长度为 endIndex-beginIndex。
    示例:

    "hamburger".substring(4, 8) returns "urge"
    "smiles".substring(1, 5) returns "mile"


    */

  • 相关阅读:
    ireport字体无效处理
    java web调用打印机打印pdf文件
    Extjs中如何在一行textfield后面增加文字提示
    java 压缩文件
    filter加载springbean
    Elasticsearch问题记录
    dubbo管控台的安装记录及dubbo开发调试记录
    mysql索引整理
    fastdfs集群搭建3
    fastdfs集群搭建2
  • 原文地址:https://www.cnblogs.com/wsxjbky/p/3056065.html
Copyright © 2011-2022 走看看