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"


    */

  • 相关阅读:
    Python 安装Twisted 提示python version 2.7 required,which was not found in the registry
    Openfire Strophe开发中文乱码问题
    css div 垂直居中
    How to create custom methods for use in spring security expression language annotations
    How to check “hasRole” in Java Code with Spring Security?
    Android 显示/隐藏 应用图标
    Android 当媒体变更后,通知其他应用重新扫描
    文件上传那些事儿
    专题:点滴Javascript
    主流动画实现方式总结
  • 原文地址:https://www.cnblogs.com/wsxjbky/p/3056065.html
Copyright © 2011-2022 走看看