11.14日常的练手小题

一 回文数

给一个数字,怎么说也得是两位,一位没有比较的必要。

这个数字与它从个位向前取值组成的数字相同的便是回文。例如121、11。

然后来想想怎么进行反向取值组成一个数字。

后来小伙我自己可能搞烦了,写了个还可以用来判断字符串是不是符合规律的代码。(当然了判断字符串还得重载一下我的数字方法)

上代码:

        String str=Integer.toString(x);//将数字变成字符串
        String[] strings=str.split("");//将字符串依照“”分开组成一个String类型的数组
        String[] s=new String[strings.length];
//新定义一个数组。可能这个不是必要的,但是为了好理解所以我又加上了
        String[] s1=new String[strings.length];
        for (int i = 0; i <str.length(); i++) {
            s[i]=strings[i];//循环赋值
        }
        for (int i =strings.length-1; i>=0; i--) {
            for (int j= strings.length-i-1; j < strings.length; j++) {
                if (s1[j]==(null))//判断是否为空,也可以不判断,但是可能会出错
                s1[j]=strings[i];//赋值
                break;//跳出循环
            }
        }
        int count=0;//给一个count用来计数
        for (int i = 0; i <s.length; i++) {
            if (s[i].equals(s1[i])){
                count++;//循环判断s与s1中的每一个是否相同,相同count自加一
            }
        }
        if (count==s.length){
            return true;//最后判断是否全部相同
        }else return false;

 还有一个一开始比较折磨我的就是这个代码

//     if (s.equals(s1)){
//         return true;
//     }else return false;

我是直接进行了数组的equals比较

后来发现equals在数组比较的时候是直接“==”;无法比较字符串,所以要么重写一下equals方法要么跟我上面一样换一种比较方法。

二 统计

给你一个整数数组 arr ,以及 ab 、c 三个整数。请你统计其中好三元组的数量。

如果三元组 (arr[i], arr[j], arr[k]) 满足下列全部条件,则认为它是一个好三元组。

  • 0 <= i < j < k < arr.length
  • |arr[i] - arr[j]| <= a
  • |arr[j] - arr[k]| <= b
  • |arr[i] - arr[k]| <= c
       public static void main(String[] args) {
            int count=0;//给一个总数
            Scanner input=new Scanner(System.in);
            System.out.println("a:");
            int a= input.nextInt();
            System.out.println("b:");
            int b= input.nextInt();
            System.out.println("c:");
            int c= input.nextInt();//键盘输入a,b,c
            System.out.println("整数数组为:");
            String sum=input.next();//键盘输入字符串
            String[] sums=sum.split(",");//将字符串数组化
            int[] arr=new int[sums.length];//创建数字数组
            for (int i = 0; i < sums.length; i++) {
                arr[i]= Integer.parseInt(sums[i]);//循环赋值
            }
            for (int i = 0; i <arr.length-2; i++) {//i<j长度需要减一
                for (int j = i+1; j < arr.length-1; j++) {//同理就j<k
                    if(i<j){
                        for (int k =j+1; k <arr.length ; k++) {
                            if (Math.abs(arr[i]-arr[j])<=a&&Math.abs(arr[j]-arr[k])<=b&&Math.abs(arr[i]-arr[k])<=c){//使用Math中的绝对值方法进行判断
                                count++;//总数加一
                            }}
                    }
                }
            }
            System.out.println(count);
        }

    这个题目没有什么特别的知识点,将基础知识运用一下就可以完成了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值