一 回文数
给一个数字,怎么说也得是两位,一位没有比较的必要。
这个数字与它从个位向前取值组成的数字相同的便是回文。例如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
,以及 a
、b
、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); }
这个题目没有什么特别的知识点,将基础知识运用一下就可以完成了。