JAVA数组例题

本文深入探讨了字符串处理的四大核心技能,包括字符串压缩、数字计数、逆序转换及数组旋转,通过实例演示如何运用Java实现这些操作,适合初学者快速掌握。

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

1、字符串转化(压缩) “aabbccdaa” -> “a2b2c2d1a2”
关于字符串的压缩,后期会学到zip包,而作为初学者我们应该能够以一些简单的语法把数据的解压敲出来

import java.util.Scanner;

public class TestMain{
    public static String stringCompress(String str){
        StringBuilder buf=new StringBuilder();
        char[] ch=str.toCharArray() ;
        char ch1=str.charAt(0);
        int count=1;
        int i = 1;
       for(i=1;i<ch.length;i++){
           char ch2=str.charAt(i);
           if(ch1==ch2){
               count++;
               continue;
           }
               buf=buf.append(count).append(ch1);
               count=1;
               ch1=ch2;
           }
          buf=buf.append(count).append(ch1);
        return buf.toString();
    }
public static void main(String[] args){
    System.out.println("请输入您需要输入的字符串:");
    Scanner scanner=new Scanner(System.in);
    String str=scanner.nextLine();
    stringCompress(str);
    System.out.println(stringCompress(str));
    }

2、统计字符串中数字个数
//如:“abc21b416u” ===> 输出5
这道题相对来说比较简单,只需要遍历字符串的内容在判断每一个字符是否为数字便可

import java.util.Scanner;

public class TestMain{
    public static int isNumeric(String str){
       char[] ch=str.toCharArray() ;
        int count=0;
       for(int i=0;i<ch.length;i++){
           if(ch[i]>'0'&&ch[i]<'9'){
               count++;
           }
       }
      return count;
    }
public static void main(String[] args){
    System.out.println("请输入您需要输入的字符串:");
    Scanner scanner=new Scanner(System.in);
    String str=scanner.nextLine();
    System.out.println(isNumeric(str));
    }

3、题目:=====i am biter 逆置为:biter am i
这道题是面试常考题,只需先将字符串转为字符数组,然后全部逆置再将每个单词逆置

import java.util.Scanner;

public class TestMain{
    public static void reverse(int i,int j,char[] ch){//写一个交换函数
        while(i<j){
            char temp;
            temp=ch[i];
            ch[i]=ch[j];
            ch[j]=temp;
            i++;
            j--;
        }
    }
    public static String reverseSentence(String str){
        char[] ch=str.toCharArray() ;
        reverse(0,ch.length-1,ch);//先将整体字符串交换一遍
        int begin=0;
        for(int i=1; i<ch.length;i++){
            if(ch[i]==' '){//包括“ ”也需要判断,当遍历到“ ”时,跳到下一个
                reverse(begin,i-1,ch);
                begin=1+i;
            }
        }
        reverse(begin,ch.length-1,ch);
        return new String(ch);
    }
public static void main(String[] args){
    System.out.println("请输入您需要输入的字符串:");
    Scanner scanner=new Scanner(System.in);
    String str=scanner.nextLine();
    System.out.println(reverseSentence(str));
    }

4、将一个数组从左开始第几位之前的进行旋转:左旋数组
这里用到了String类中的subString方法,substring方法即截取字符串中的子字符串,只需从你指定的数组下标开始截取,然后在和前面的置换,方法十分简单。

import java.util.Scanner;

public class TestMain{
    public static void leftRotateString(String str,int n){
       String ch=str.substring(n);
       String ch1=str.substring(0,n);
       String temp;
       temp=ch1;
       ch1=ch;
       ch=temp;
        System.out.println(ch1+ch);

    }
public static void main(String[] args){
    System.out.println("请输入您需要输入的字符串:");
    Scanner scanner=new Scanner(System.in);
    String str=scanner.nextLine();
    System.out.println("请输入您要旋转的字母的下标:");
    Scanner scanner1=new Scanner(System.in);
    int n=scanner1.nextInt();
    leftRotateString( str, n);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值