刷题日常1

题目1:

实现一个算法来识别一个字符串 str2 是否是另一个字符串 str1 的排列。排列的解释如下:如果将 str1 的字符拆分开,重新排列后再拼接起来,能够得到 str2 ,那么就说字符串 str2 是字符串 str1 的排列。(不忽略大小写)

如果 str2 字符串是 str1 字符串的排列,则输出 YES;如果 str2 字符串不是 str1 字符串的排列,则输出 NO

import java.util.Arrays;
import java.util.Scanner;

public class Test1 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        String s=scanner.nextLine();
        String s1=scanner.nextLine();
        char a[]=s.toCharArray();
        char a1[]=s1.toCharArray();
        Arrays.sort(a);
        Arrays.sort(a1);
        String s2=new String(a);
        String s3=new String(a1);
        if (s2.equals(s3)) {
            System.out.println("YES");
        }
        else System.out.println("NO");
    }
}

题目2:

实现一个算法来压缩一个字符串。压缩的要求如下:

需要判断压缩能不能节省空间,仅在压缩后字符串比原字符串长度更短时进行压缩。

压缩的格式是将连续相同字符替换为字符 + 数字形式,例如 "AAABCCDDDD" 变为 "A3BC2D4"。

import java.util.Scanner;

public class Test2 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        //输入一行字符串
        String str=scan.next();
        //StringBuffer用来存放处理后的数据
        StringBuilder sb=new StringBuilder();
        //第一层循环用来确定有多少个不同的字母
        for(int i=0;i<str.length();i++){
            //用来存放一样的字母
            int count=0;
            int j=i;
            for(;j<str.length();j++){
                //判断有几个一样的字母
                if(str.charAt(i)==str.charAt(j)){
                    count++;
                }
                else{
                    break;
                }
            }
            if(count>1){
                sb.append(str.charAt(i));
                sb.append(count);
                i=j-1;
            }
            else{
                sb.append(str.charAt(i));
            }
        }
        //用来判断是否能压缩
        if(sb.length()<str.length()){
            System.out.print(sb.toString());
        }
        else{
            System.out.print("NO");
        }
        scan.close();
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值