今晚做了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中提到的两种思路,如果哪位大神有更好的解法,恳请不吝赐教,不胜感激!