刚刚考完上机来写一波自己的解答:
第一题
import java.util.Scanner;
/**
* Created by Xavier on 2017/3/15.
* 写出一个程序,输入一个字符串,然后输出大写转换为小写之后的字符串。不在字母范围内的字符,需丢弃
*
* 例如: 输入Abc 输出abc
*/
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
String line = sc.nextLine();
StringBuilder newLine = new StringBuilder();
for (int i = 0; i < line.length(); i++) {
if (line.charAt(i) >= 'A' && line.charAt(i) <= 'Z') {
newLine.append((char) (line.charAt(i) + 32));
} else if (line.charAt(i) >= 'a' && line.charAt(i) <= 'z') {
newLine.append(line.charAt(i));
}
}
System.out.println(newLine.toString());
}
}
}
第二题
import java.util.Scanner;
/**
* @author Xavier
* @date 2017/3/17
* 集五福作为近年来大家喜闻乐见迎新春活动,集合爱国福、富强福、和谐福、友善福、敬业福即可分享超大红包
* 题目:以0和1组成的长度为5的字符串代表每个人所得到的福卡,每一位代表一种福卡,1表示已经获得该福卡
* 单类型福卡不超过1张,随机抽取一个小于10人团队,求该团队最多可以集齐多少套五福
*
* 例如:输入11001 输出0
*/
public class Main {
public static void main(final String[] args) {
final Scanner sc = new Scanner(System.in);
int sum = 0;
while (sc.hasNext()) {
final String line = sc.nextLine();
sum += Integer.valueOf(line);
}
int min = 10;
while (sum > 0) {
final int tmp = sum % 10;
min = tmp < min ? tmp : min;
sum /= 10;
}
System.out.println(min);
}
}
第三题
import java.util.Scanner;
/**
* @author Xavier
* @date 2017/3/17
* 请您写一个postfixCalc函数,该函数根据输入的后缀表达式方式的字符串,输出计算的结果。
* 例如,postfixAdd(32=5-")==0.
*/
public class Main {
public static void main(final String[] args) {
final Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
final String inputLine = sc.nextLine();
final char[] input = inputLine.toCharArray();
System.out.println(postfixCalc(input));
}
}
private static int postfixCalc(final char[] input) {
final String[] inputStr = new String[input.length];
for (int i = 0; i < input.length; i++) {
if (input[i] >= 'A' && input[i] <= 'F') {
inputStr[i] = String.valueOf(input[i] - 'A' + 10);
continue;
}
inputStr[i] = String.valueOf(input[i]);
}
for (int i = 0; i < input.length; i++) {
if (input[i] >= '*' && input[i] <= '-') {
cal(inputStr, i);
}
}
return Integer.valueOf(inputStr[inputStr.length-1]);
}
private static void cal(final String[] input, final int n) {
final int a;
final int b;
final String op = input[n];
a = Integer.valueOf(input[n - 2]);
b = Integer.valueOf(input[n - 1]);
final int res;
switch (op) {
case "+":
res = a + b;
break;
case "-":
res = a - b;
break;
default:
res = a * b;
break;
}
input[n] = String.valueOf(res);
for (int i = n - 1; i >= 2; i--) {
input[i] = input[i - 2];
}
}
}
总的来说,题目不是很难
第一题的题干里说要弃掉非字母的部分,但是好像测试例子里面没有这样的情况,因为一开始我没有注意,后来检查的时候才发现,就加了上去
第二题就比较容易,没有什么好说的
第三题的话,主要是比较难理解这个“后缀表达式计算”,至少我之前是不知道的,就看着题目给的例子加上自己的猜测理解了一下,问了一下客服回答说自己想…
感觉这道题目的话,理解之后就也是和容易实现的,比较麻烦的部分就是char跟int类型的转换,后来写的时候发现一点问题就是如果直接用int算完转回char会发生越界,如果遇到乘法产生比较大的结果就不知道怎么存回去,于是就想着直接换成String数组来存储