验证码和判断回文(递归)

Posted hhjing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了验证码和判断回文(递归)相关的知识,希望对你有一定的参考价值。

一:产生6位的随机验证码(区分大小写)

思路:1.将62位字符存在字符串中,先产生随机的6位数

           2.用append()定义动态字符串数组,再用charAt()对其进行索引,从而形成随机字符的函数

           3.书写主函数,调用getStringRandom(n)函数,决定产生随机字符的位数

package identifying_code;
import java.util.Scanner;
import java.util.Random;

public class Identifying_Code 
        public static String getStringRandom(int length) //length表示随机生成几位随机数
            String str="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
            Random random=new Random();
            StringBuffer bf=new StringBuffer();//动态字符串数组
            for(int i=0;i<length;i++)
            
                int number=random.nextInt(62);//随机产生0-62的数字
                bf.append(str.charAt(number));//往动态字符串数组添加
                //str.charAt(number)索引str中的第number-1个字符
                //Stringbuffer1.append(Stringbuffer2)是放在一起的,而String1+String2存在于不同的两个地址内存
            
            return bf.toString();//返回一个以"文本方式表示"此对象的字符串
        
        public static void main(String[] args) 
            String code="";
            code=getStringRandom(6);
            System.out.println("验证码为:"+code);
            System.out.println("请输入验证码(区分大小写):");
            Scanner sc=new Scanner(System.in);
            String sr=sc.next();
            if(sr.equals(code))
                System.out.println("验证码正确");
            else
                System.out.println("验证码错误");
        
    
    

二:用递归判断一个字符串是否为回文序列(回文序列例:level,abba...)

思路:1.书写递归函数,判断递归得终止条件

           2.将字符串装换成字符数组(用charAt())循环调用,比较是否相等

           3.定义布尔类型,输出布尔类型结果

方法一:

package hhj;
//利用递归判断是否为回文序列
/**
 * 判断终止条件,循环调用
 */
import java.util.Scanner;
public class Hhj
    public static boolean isTrue(String str,int n) 
       int len=str.length();
       if(n==0||n==1)
           return true;//判断递归终止条件
       else
       
           if(str.charAt(len-n)==str.charAt(n-1))
               return isTrue(str,--n);//循环比较
           else 
               return false;
       
    
    public static void main(String[] args) 
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入字符串:");
        String st=sc.next();
        int l=st.length();
        if(isTrue(st,l))//调用isTrue函数
            System.out.println("是回文序列");
        else
            System.out.println("不是回文序列");
    

方法二:

用subString()

package hu;

import java.util.Scanner;


public class Hu 
    public static void main(String[] args) 
     String str="";
     Scanner sc=new Scanner(System.in);
     str=sc.nextLine();
     System.out.println(StringHuwen(str));     
    
    public static boolean StringHuwen(String str) 
        int len=str.length();
        if(len==0||len==1)
            return true;
        char first=str.charAt(0);
        char last=str.charAt(len-1);
        if(first!=last)
            return false;
        return StringHuwen(str.substring(1,len-1));
    

subString(a,b)截取字符串从位置a截取到b,但是不包括b;

例题:String str=“123456789”;

          str.subString(0)——>123456789

          str.subString(1)——>23456789

     str.subString(0,1)——>1

          str.subString(0,4)——>1234

以上是关于验证码和判断回文(递归)的主要内容,如果未能解决你的问题,请参考以下文章

js实现输入手机验证码后点击提交按钮验证手机输入的验证码和发送的验证码是不是一致

随机验证码图片验证码和邮箱发送用户验证码

PHP生成各种验证码和Ajax验证

PHP算式验证码和汉字验证码的实现方法

PHP字母数字验证码和中文验证码

发送短信验证码和邮箱验证码—Java实现