java字符串相关练习题

这篇博客主要介绍了四个Java字符串操作问题:如何压缩字符串,统计数字个数,实现字符串逆置以及执行数组左旋操作。具体实例包括将'aabbccdaa'压缩为'a2b2c2d1a2',在'abc21b416u'中找出数字总数,并演示如何将'i am biter'逆置为'biter am i',以及将字符串'abcdef'在第2位前进行旋转得到'cdefab'。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、字符串转化(压缩) “aabbccdaa” -> “a2b2c2d1a2”

public class TextDemo1 {
    public static String stringComPress(String str){
        char[] array = str.toCharArray();//将字符串转换为字符数组
        StringBuilder stringBuilder = new StringBuilder();//创建一个累加的新的数组
        stringBuilder.append(array[0]);//将数组中的第一个元素放入stringBuilder
        int count = 0;//定义一个数表示重复的字符的个数
        int temp = array[0];//将第一个元素当作一个比较的对象来判断是否相同,相同的话count计数加一
        for (int i = 0; i <array.length; i++) {
            if(array[i]==temp){
                count++;
            }else{
                stringBuilder.append(count);//数组下一位存放上一位的个数
                stringBuilder.append(array[i]);//将新的元素放入数组
                temp = array[i];//将新的元素作为比较的对象
                count = 1;//记数重置为1
            }
        }
        stringBuilder.append(count);
        String str2 = new String(stringBuilder);//将数组转换成字符串
        return str2;
    }
    public static void main(String[] args) {
        System.out.println(stringComPress("aabbccdaa"));
    }
}

2、统计字符串中数字个数
//如:“abc21b416u” ===> 输出5

public class TextDemo2 {
    public static int isNumberic(String str){
        int a = 0;
        for (int i = 0; i <str.length() ; i++) {
            //判断一个字符是否为数字
            if(Character.isDigit(str.charAt(i))){
                a++;
            }
        }
        return a;
    }
    public static void main(String[] args) {
        System.out.println(isNumberic("abc51b416u"));
    }
}

3、题目:=====i am biter 逆置为:biter am i

public class TextDemo3 {
    public static String reverseSentence(String str){
        String[]a1 = str.split(" ");//将字符串按空格拆分
        String[]a2 = new String[a1.length];
        for (int i = 0; i <a2.length ; i++) {
            a2[a1.length-i-1] = a1[i];
        }
        String result ="";
        for (int i = 0; i <a2.length ; i++) {
            result = result+(a2[i]+" ");
        }
        return result;
    }
    public static void main(String[] args) {
        System.out.println(reverseSentence("i am biter"));
    }
}

4、将一个数组从左开始第几位之前的进行旋转:左旋数组
如:将"abcdef"第2位之前(a为0号位置)进行旋转----》“cdefab”。

public class TextDemo4 {
    public static void leftRotateString(String str, int n) {
        char[]array1 = str.toCharArray();//将给定字符串转换成数组
        char[]array2 = new char[array1.length];//定义新数组存储旋转后的元素
        int j = 0;//i表示源数组的下标,j表示新数组的下标
        for (int i = n; i <array1.length ; i++) {
            array2[j] = array1[i];
            j++;
        }
        for (int i = 0; i <n ; i++) {
            array2[j] =array1[i];
            j++;
        }
        String str1 = new String(array2);
        System.out.println(str1);
    }
    public static void main(String[] args) {
        leftRotateString("abcdef",2);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值