您的位置:首页 > 编程语言 > Java开发

2015小明参加实习笔试笔记

2015-05-19 00:00 465 查看
摘要: 暑假即将到来,想找份实习,于是乎参加了部分笔试,简单的记记。

题目1:2015-5-19下午参加某某公司的笔试题(Java开发),要求实现将输入的句子倒序输出。比如输入“I Love You ”,返回“You Love I”。

显然,首先应该将输入的句子存储在一个字符串数组中。

一开始想了老半天不知道怎么实现输入控制,就是实现将输入的句子存在字符串数组中。怎么实现呢?

我当场是没有这么做的,索性直接以相应的字符串数组作为入口参数实现句子逆序输出,这个简单。代码如下:

public static String[]  UpsideDown (String[] StrTest) {
int k = StrTest.length-1;
String[] returnStrArr = new String[StrTest.length];
for (String str : StrTest) {
returnStrArr[k] = str;
k--;
}
for (int i = 0; i < StrTest.length; i++) {
returnStrArr[k--] = StrTest[i];
}
return returnStrArr;
}

但是回来想想这是不应该的,要实现将输入的一堆以空格分隔的字符串存储在数组中应该是简单的,于是就打开IDE开始尝试了。。。试了很久,中间过程省略,结果如下,如果太笨请别笑,告诉我你的答案哈!!谢谢!

import java.util.Scanner;
/**
* 2015参加某某公司的笔试题(Java开发),要求实现将输入的句子倒序输出。
* @File InversionSentence.java
* @date 2015年5月19日
* @auther Fzu_Xmu_bmw http://weibo.com/wangmb007 */
public class InversionSentence {

public static void main(String[] args)  {//来来来,测试一下
String[] TestStrArr = GetLineToStringArray();
String[] InversionStrArr =  InversionStrArray(TestStrArr);
for (String s : InversionStrArr) {
System.out.print(s+" ");
}
}

/**
* 实现将输入的字符串数组存入数组并返回相应的字符串数组,输入的字符串以空格间隔。
* return Line ; Line 是一个字符串数组
* @author http://weibo.com/wangmb007 */

public static String[] GetLineToStringArray(){
String[] TempArray = new String[100];
Scanner inputLine = new Scanner(System.in);
String s0 = inputLine.nextLine();
Scanner Input = new Scanner(s0);
int cnt=0;
while (Input.hasNext()) {
TempArray[cnt] = Input.next();
cnt++;
}
String[] Line = new String[cnt];
for (int i = 0; i < cnt; i++) {
Line[i]=TempArray[i];
}
inputLine.close();
Input.close();
return Line;
}

/**
* 实现将输入的字符串数组逆序存储并返回。
* @param inputStrArray
* @return InversionStrArray
* @author http://weibo.com/wangmb007 */

public static String[] InversionStrArray(String[] inputStrArray) {
int k = inputStrArray.length-1;
String[] InversionStrArray = new String[inputStrArray.length];
for (String str : inputStrArray) {
InversionStrArray[k--] = str;
}
return InversionStrArray;
}
}

运行结果:

I Love You
You Love I

题目2:

/**
* 游戏,50个人围城一圈,编号1到50;
* 从1开始数,逢三或者逢三的倍数就退出,剩下的继续,直到剩下一个人。
* 求这个人的一开始的编号是多少?【其实游戏可以直接升级为N个人玩,逢M的倍数的游戏】
*/

50人玩的参考代码如下:

/**
* @File WStest_PlayGame3mod.java
* @date 2015年5月17日 厦门某某上市公司笔试(挺想去的)
* @auther Fzu_Xmu_bmw
*/
/**
* 游戏,N个人围城一圈,编号1到N;
* 从1开始数,逢三或者逢三的倍数就退出,剩下的继续,直到剩下一个人。
* 求这个人的一开始的编号是多少?
*/
public class WStest_PlayGame3mod {
public static void main(String[] args) {
new WStest_PlayGame3mod().run();
}

public void run() {
int[] Test = new int[50];
for (int i = 0; i < Test.length; i++) {//给每个人编号1~N
Test[i]=i+1;
}
for (int e : Test) {
System.out.print(e+" ");
}
System.out.println("");
int[] Temp = Game(Test);
for (int e : Temp) {
if (e!=0) {
System.out.print("The Winner is NO."+e+".");
}
}
}

public int[] Game(int[] arr) {
int arrLength = arr.length;
if (arrLength<2) {
return arr;
}
int flag=0,i=0,j=arrLength;
while (j>1) {
if(arr[i]!=0){
flag++;
if (flag%3==0) {
arr[i]=0;
j--;
}
}
i++;
if (i==arrLength) {
i=0;
}
}
return arr;
}
}

改进后的玩法,人数N_Person与游戏的特殊数值M由控制台输入。。

import java.util.Scanner;
/**
* @File Game3mod.java
* @date 2015年5月19日
* @auther Fzu_Xmu_bmw
*/
public class Game3mod {
public static void main(String[] args) {
new Game3mod().run();
}
public void run() {
Scanner fin = new Scanner(System.in);
int N_Person = fin.nextInt();
int M = fin.nextInt();
int[] Temp = Game(N_Person,M);
for (int e : Temp) {
if (e!=0) {
System.out.print("The Winner is NO."+e+".");
}
}
fin.close();
}

public int[] Game(int N,int M) {
int[] arr = new int
;
for (int i = 0; i < arr.length; i++) {
arr[i]=i+1;
}
int arrLength = N;
if (arrLength<2) {
return arr;
}
int flag=0,i=0,j=arrLength;
while (j>1) {
if(arr[i]!=0){
flag++;
if (flag%M==0) {
arr[i]=0;
j--;
}
}
i++;
if (i==arrLength) {
i=0;
}
}
return arr;
}
}

运行结果:

50 3
The Winner is NO.11.

题目3:

/**
* 输入数组,返回奇数在前偶数在后的数组。
*/

/**
* @File WStest_oddFirst.java
* @date 2015年5月17日
* @auther Fzu_Xmu_bmw
*/
/**
* 输入数组,返回奇数在前偶数在后的数组。
*/
public class WStest_oddFirst {
public static void main(String[] args) {
new WStest_oddFirst().run();
}

public  void run() {
int testArray[]={0,1,2,3,4,5,6,7,8,9,8,7,6,5,4,3,2,1,0};
int Tem[] = new int[testArray.length];
Tem = oddFirst(testArray);
System.out.println("before:");
for (int y : testArray) {
System.out.print(y+" ");
}

System.out.println("");

System.out.println("after:");
for (int x : Tem) {
System.out.print(x+" ");
}
}

public int[]  oddFirst(int[] Arr) {
int [] Temp = new int[Arr.length];
int temp_i=0;
for (int a: Arr) {
if (a%2 == 1) {
Temp[temp_i++]=a;
}
}
for (int a: Arr) {
if (a%2 == 0) {
Temp[temp_i++]=a;
}
}
return Temp;
}
}


题目4:二叉树取镜像

/**
* @File BMW_BinaryTree.java
* @date 2015年5月19日
* @auther Fzu_Xmu_bmw
*/
package tree;
import java.util.Stack;
public class BMW_BinaryTree {
private TreeNode root;

private class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x){
val=x;
}
}

/**
* 递归创建二叉树
* @param node
* @param data
*/
public void buildTree(TreeNode node,int data){
if(root == null){
root = new TreeNode(data);
}else{
if(data < node.val){
if(node.left == null){
node.left = new TreeNode(data);
}else{
buildTree(node.left,data);
}
}else{
if(node.right == null){
node.right = new TreeNode(data);
}else{
buildTree(node.right,data);
}
}
}
}

//中序
public  void inOrderTraversal(TreeNode node){
if(node == null){
return;
}else{
inOrderTraversal(node.left);
System.out.print(node.val+" ");
inOrderTraversal(node.right);
}
}

//前序
//递归实现
public void preOrder(TreeNode biTree){
System.out.print(biTree.val+" ");
TreeNode leftTree=biTree.left;
if(leftTree!=null){
preOrder(leftTree);
}
TreeNode rightTree=biTree.right;
if(rightTree!=null){
preOrder(rightTree);
}
}
//非递归实现
public void non_preOrder(TreeNode biTree){
Stack<TreeNode> stack=new Stack<TreeNode>();
while(biTree!=null||!stack.isEmpty()){
while(biTree!=null){
System.out.print(biTree.val+",");
stack.push(biTree);
biTree=biTree.left;
}
if(!stack.isEmpty()){
biTree=stack.pop();
biTree=biTree.right;
}
}
}

//后序
public void postOrder(TreeNode biTree){
TreeNode leftTree=biTree.left;
if(leftTree!=null){
postOrder(leftTree);
}
TreeNode rightTree=biTree.right;
if(rightTree!=null){
postOrder(rightTree);
}
System.out.print(biTree.val+" ");
}

//得到镜像二叉树
public static void mirror(TreeNode root){
if(root == null){
return ;
}
if((root.left == null) && (root.right == null)){
return;
}
TreeNode temp = root.left;
root.left = root.right;
root.right = temp;
mirror(root.left);
mirror(root.right);
}

//test测试
public static void main(String[] args) {
int[] a = {7,2,4,1,5,0,6,8,3,9};
BMW_BinaryTree bTree = new BMW_BinaryTree();
for (int i = 0; i < a.length; i++) {
bTree.buildTree(bTree.root, a[i]);
}

System.out.println("前序遍历preOrder:");
bTree.preOrder(bTree.root);
System.out.println("");
System.out.println("中序遍历inOrder:");
bTree.inOrderTraversal(bTree.root);
System.out.println("");
System.out.println("后序遍历postOrder:");
bTree.postOrder(bTree.root);

mirror(bTree.root);
System.out.println("");
System.out.println("*取【镜像】之后*");

System.out.println("前序遍历preOrder:");
bTree.preOrder(bTree.root);
System.out.println("");
System.out.println("中序遍历inOrder:");
bTree.inOrderTraversal(bTree.root);
System.out.println("");
System.out.println("后序遍历postOrder:");
bTree.postOrder(bTree.root);
}
}

题目5:只用一个for循环打印九九乘法表(只用一个for循环打印99乘法表)

/**
* 2015年5月27日 **公司笔试题
* 只用一个for循环打印九九乘法表
* @author Fzu_Xmu_bmw
*/
public static void Table_9_9() {
for (int m=1,n= 1; m < 10;) {
System.out.print(n+"X"+m+"="+n*m+";\t");
n++;
if (n>m) {
m++;
n=1;
System.out.println("");
}
}
}

九九乘法表运行结果:

1X1=1;
1X2=2; 2X2=4;
1X3=3; 2X3=6; 3X3=9;
1X4=4; 2X4=8; 3X4=12; 4X4=16;
1X5=5; 2X5=10; 3X5=15; 4X5=20; 5X5=25;
1X6=6; 2X6=12; 3X6=18; 4X6=24; 5X6=30; 6X6=36;
1X7=7; 2X7=14; 3X7=21; 4X7=28; 5X7=35; 6X7=42; 7X7=49;
1X8=8; 2X8=16; 3X8=24; 4X8=32; 5X8=40; 6X8=48; 7X8=56; 8X8=64;
1X9=9; 2X9=18; 3X9=27; 4X9=36; 5X9=45; 6X9=54; 7X9=63; 8X9=72; 9X9=81;

题目6:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Java