常见字符串题目


代码题

提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


反转字符串

  • 反转键盘录入的字符串。
  • 代码实现,参考效果如图所示:
    在这里插入图片描述
public class Demo01 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("请键盘输入字符串:");
        String str = input.next();

        StringBuilder s = new StringBuilder(str);
        str = s.reverse().toString();
        System.out.println("反转后:" + str);
        input.close();
    }
}

关键api:StringBuilder reverse()

判断QQ号码格式的准确性

  • 键盘录入QQ号码,验证格式的正确性。
    – 必须是5—12位数字。
    – 0不能开头。在这里插入图片描述

  • 代码实现,参考效果如图所示:

public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.print("请输入qq号码:");
		String qq = input.next();
		
		System.out.print("这个qq号是否正确:");
		if(qq.matches("[1-9][0-9]{4,11}+")){
			System.out.println(true);
		}else{
			System.out.println(false);
		}
		input.close();
	}

关键api: boolean matches(String regex)
所用的正则表达式: [1-9][0-9]{4,11}+

字符串查找

  • 字符串查找。
    – 键盘录入一个大字符串,再录入一个小字符串。
    – 统计小字符串在大字符串中出现的次数。
  • 代码实现,效果如图所示:
    在这里插入图片描述
	public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("请输入大字符串:");
        String big = input.next();

        System.out.print("请输入小字符串:");
        String small = input.next();

        int index;
        int count = 0;
        while((index = big.indexOf(small))!=-1){
            big = big.substring(index+small.length());
            count++;
        }
        System.out.println(small + "出现了" +count + "次");

        input.close();
    }

替换某字符串中的某字符串。

  • 替换某字符串中的某字符串。
    – 键盘录入一个srcStr字符串,再录入一个delStr字符串。
    – 删除该字srcStr符串中的所有delStr字符串。
    – 并且统计delStr字符串在srcStr中出现的次数
  • 代码实现,部分效果如图所示:
    在这里插入图片描述
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		
		System.out.print("请输入原字符串:");
		String src = input.next();
		
		System.out.print("请输入要删除的字符串:");
		String del = input.next();
		
		String result = src.replaceAll(del, "");
		
		int count = (src.length() - result.length())/del.length();
		System.out.println(del+"共出现了:" + count + "次");
		System.out.println("删除" + del + "后字符串:" + result);
		
		input.close();
	}

保留两位小数

  • 生成一个随机100内小数,转换为保留两位小数的字符串,不考虑四舍五入的问题。
  • 代码实现,效果如图所示:
    在这里插入图片描述
	public static void main(String[] args) {
		double num = Math.random() * 100;
		System.out.println("随机数为:" +num);
		String str = num + "";
		str = str.substring(0,str.indexOf(".") + 3);
		System.out.println("截取小数点后两位后为:" + str);
	}

筛选字符串

  • 筛选字符串。
    – 定义数组,存入多个字符串。
    – 删除长度大于5的字符串,打印删除后的数组。
  • 代码实现,效果如图所示:
    在这里插入图片描述
	public static void main(String[] args) {
        String[] arr = 	{"addaff","java","fhafkkf","haha","lin","yan","Iloveyou"};
        System.out.println("原字符串:");
        System.out.println( Arrays.toString(arr));
        int index = 0;
        while(index < arr.length){
            if(arr[index].length()>5){
                System.arraycopy(arr, index+1, arr, index, arr.length-index-1);
                arr = Arrays.copyOf(arr, arr.length-1);
            }else{
                index++;
            }
        }
        System.out.println("删除后:");
        System.out.println(Arrays.toString(arr));
    }

判断回文字符串

  • 判断回文字符串。如果一个字符串,从前向后读和从后向前读,都是一个字符串,称为回文串,比如mom,dad,noon。
  • 代码实现,效果如图所示:
    在这里插入图片描述
    方法一: 利用StringBuilder的reverse方法
	public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入字符串:");
        String str = sc.nextLine();
        StringBuilder s = new StringBuilder(str);
        String string = s.reverse().toString();
        System.out.print("回文数:");
        if(str.equals(string)){
            System.out.println(true);
        }else{
            System.out.println(false);
        }
        sc.close();
    }

方法二:

	public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入字符串:");
        String str = sc.nextLine();
        char[] arr = str.toCharArray();
        boolean flag = true;
        for (int left = 0,right=arr.length-1; left <=right; left++,right--) {
            if(arr[left] != arr[right]){
                flag = false;
                break;
            }
        }
        System.out.print("回文数:");
        if(flag){
            System.out.println(true);
        }else{
            System.out.println(false);
        }
        sc.close();
    }

校验密码是否合法

  • 校验密码是否合法。
    – 必须至少9个字符。
    – 必须至少2个大写字符。
    – 必须包含小写字母和数字。
  • 代码实现,效果如图所示:
    在这里插入图片描述
	public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String password = sc.nextLine();
        char[] arr = password.toCharArray();
        int upCount = 0;
        int numCount = 0;
        int lowerCount = 0;
        for (int i = 0; i < arr.length; i++) {
            if(arr[i]>='A' && arr[i]<='Z'){
                upCount++;
            }else if(arr[i]>='a' && arr[i]<='z'){
                lowerCount++;
            }else if(arr[i]>='0' && arr[i]<='9'){
                numCount++;
            }
        }
        System.out.print(password+"是否合法:");
        if(password.length() >=9 && upCount>=2 && numCount!=0 && lowerCount!=0){
            System.out.println(true);
        }else{
            System.out.println(false);
        }
        sc.close();
    }

处理字符串数字

  • 定义Handleable接口,具备一个处理字符串数字的抽象方法方法String handleString(String num);
    – 处理方式1:取整数部分。
    – 处理方式2:保留指定位小数,四舍五入。
  • 代码实现,效果如图所示:
    在这里插入图片描述
    开发提示:
  • 匿名内部类的方式,调用所有抽象方法。
package org.example.string;

import java.math.BigDecimal;

public class HandleString {
    public static void main(String[] args) {
        String num = "23.34532251";
        //将小数进行取整
        Handleable handleable = new Handleable() {
            @Override
            public String handleString(String num) {
                num = num.substring(0, num.indexOf("."));
                return num;
            }
        };
        System.out.println("原数字为:" + num);
        System.out.println("取整后为:" + handleable.handleString(num));
        //取四位小数
        Handleable handleable2 = new Handleable() {
            @Override
            public String handleString(String num) {
                BigDecimal bigDecimal = new BigDecimal(num);
                BigDecimal bigDecimal2 = new BigDecimal("1");
                BigDecimal shang = bigDecimal.divide(bigDecimal2, 4, BigDecimal.ROUND_HALF_UP);
                return shang.toString();
            }
        };
        System.out.println("原数字为:" + num);
        System.out.println("保留四位小数为:" + handleable2.handleString(num));
    }
}
interface Handleable {
    String handleString(String num);
}

对字符串进行升序排列

  • 案例:有一个字符串String abc = “342567891”,请写程序将字符串abc进行升序,可以使用JDK API中的现有的功能方法。
    在这里插入图片描述
	public static void main(String[] args) {
        String abc = "342567891";
        char[] chars = abc.toCharArray();
        Arrays.sort(chars);
        abc = new String(chars);
        System.out.println(abc);
    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值