Java 调整字符串,验证码生成

java 复制代码
package text7;

public class ZiFanz {
    public static void main(String[] args) {
        //1.定义两个字符串
        String strA = "abcde";
        String strB = "deabc";
        //2.abcde->bcdea->cdeab->deabc旋转字符串


        //旋转并比较
        boolean result = cheak(strA, strB);
        System.out.println(result);
    }

    public static  boolean cheak(String strA , String strB){
        for (int i = 0; i < strA.length(); i++) {
            strA = rotate(strA);
            if (strA.equals(strB)){
                return true;
            }
        }
        return false;
    }
    //1.作用:旋转字符串,把左侧的字符移到右侧上
    //2.形参:旋转前的字符串
    //3.返回值:旋转后的字符串
    public  static  String rotate(String str){
        //套路
        //如果我们看到要修改字符串的内容
        //可以有两个办法
        //1.用subString进行截取,把左边的字符截取出来拼接到右侧去
        //2.可以把字符串先变成一个字符数组,然后调整字符数组里面的数据,然后再把字符数组变成字符串


        //截取思路
        //获取最左侧那个字符
        char first = str.charAt(0);
        //获取剩余字符
        String end = str.substring(1);
        return end+first;
        //第二种写法
        char[] arr = str.toCharArray();
        char first = arr[0];
        for (int i = 1; i < arr.length; i++) {
            arr[i-1] = arr[i];
        }
        arr[arr.length - 1] = first;
        String result  = new String(arr);
        return result;
    }
}

自主小练习

键盘输入字符串,然后进行随机打乱

java 复制代码
package text7;

import java.util.Random;
import java.util.Scanner;

public class SuiJi {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个字符串");
        String str = sc.next();
        //2.打乱里面的内容
        String daluan = Daluan(str);
        System.out.println(daluan);
    }
    public static String Daluan(String str){
        char[] arr = str.toCharArray();
        Random rd = new Random();
        for (int i = 0; i < arr.length; i++) {
            int cishu = rd.nextInt(arr.length);
            int cishu2 = rd.nextInt(arr.length);
            if(cishu == cishu2){
                cishu2 = rd.nextInt(arr.length);
            }
            char Tihuan = arr[cishu];
            arr[cishu] = arr[cishu2];
            arr[cishu2] = Tihuan;
        }
        return new String(arr);
    }
}

在大写的A~Z和小写的a~z中随机抽取四个字母,然后在中间随机插入一个数字

java 复制代码
package text7;

import java.util.Random;

public class Yanzheng {
    public static void main(String[] args) {
        char[] allChars = generateAllChars();
        char[] result = suiji(allChars);
        Random str = new Random();
        int i = str.nextInt(10);//生成十个随机数字
        int w = str.nextInt(5);//四个字母五个断点,随机插入一个数字
        String resulti = new String(result);
        String str1 = resulti.substring(0,w) + i + resulti.substring(w);
        System.out.println(str1);
    }
    // 随机获取四个字母
    public static char[] suiji(char[] arr) {
        Random random = new Random();
        char[] result = new char[4];
        for (int i = 0; i < 4; i++) {
            int randomIndex = random.nextInt(arr.length);
            result[i] = arr[randomIndex];
        }
        return result;
    }

    public static char[] generateAllChars() {
        char[] allChars = new char[52];
        int index = 0;
        for (char c = 'a'; c <= 'z'; c++) {
            allChars[index++] = c;
        }
        for (char c = 'A'; c <= 'Z'; c++) {
            allChars[index++] = c;
        }
        return allChars;
    }
}
相关推荐
程序员秘密基地4 分钟前
基于vscode,idea,java,html,css,vue,echart,maven,springboot,mysql数据库,在线考试系统
java·vue.js·spring boot·spring·web app
何中应6 分钟前
【设计模式-5】设计模式的总结
java·后端·设计模式
草莓熊Lotso7 分钟前
【数据结构初阶】--算法复杂度的深度解析
c语言·开发语言·数据结构·经验分享·笔记·其他·算法
KyollBM13 分钟前
【CF】Day75——CF (Div. 2) B (数学 + 贪心) + CF 882 (Div. 2) C (01Trie | 区间最大异或和)
c语言·c++·算法
吾日三省吾码23 分钟前
Spring 团队详解:AOT 缓存实践、JSpecify 空指针安全与支持策略升级
java·spring·缓存
CV点灯大师27 分钟前
C++算法训练营 Day10 栈与队列(1)
c++·redis·算法
风象南42 分钟前
SpringBoot的5种日志输出规范策略
java·spring boot·后端
GGBondlctrl43 分钟前
【leetcode】递归,回溯思想 + 巧妙解法-解决“N皇后”,以及“解数独”题目
算法·leetcode·n皇后·有效的数独·解数独·映射思想·数学思想
咖啡啡不加糖1 小时前
深入理解MySQL死锁:从原理、案例到解决方案
java·数据库·mysql
zimoyin1 小时前
Compose Multiplatform 实现自定义的系统托盘,解决托盘乱码问题
java