今晚做了360的校招笔试题,编程题难度适中,在这里跟大家分享一下编程题的第一题。
1、 题目
2、 输入输出及样例
3、 我的思路
这题应该看题目理解一下就有思路,最简单粗暴的就是创建一个二维数组input[][],模拟键盘的九个数字键,判断是否同时成立input[0][0]=input[2][2]、input[0][1]=input[2][1]、input[0][2]=input[2][0]、input[1][0]=input[1][2]。如果同时成立,那么就是对称,否则就是不对称。
但是这种方法写起来比较繁琐,还有一种比较简单点的写法,就是定义一个一维数组input[],判断input[i]==input[8-i]在i等于0到3时是否都成立。如果是,那么对称,否则不对称,这里可以用循环实现,写法上稍微简单些。
4、 我的实现
import java.util.Scanner;public class Ti1{public static void main(String[] args){ Scanner scanner = new Scanner(System.in);while(scanner.hasNextLine()){char[] input = new char[9]; char[] input1 = scanner.nextLine().toCharArray();char[] input2 = scanner.nextLine().toCharArray();char[] input3 = scanner.nextLine().toCharArray();//将输入的数据构建成一个一维数组for(int i=0; i<3; i++){input[i] = input1[i];}for(int i=0; i<3; i++){input[i+3] = input2[i];}for(int i=0; i<3; i++){input[i+6] = input3[i];}//判断是否对称int flag = 0;for(int j=0; j<4; j++){if(input[j] != input[8-j]){flag = 1;break;}}if(flag == 0)//对称{System.out.println("YES");}else//不对称{System.out.println("NO");} } }}
5、 总结
这题我能想到的就是4中提到的两种思路,如果哪位大神有更好的解法,恳请不吝赐教,不胜感激!