标签:style blog color ar 使用 sp java for div
题一:
(1)给出一个整数(负数使用其绝对值),输出这个整数中的两种递减数(1.最大递减数;2.递减数中各位数之和最大的数)之和。
递减数:一个数字的递减数是指相邻的数位从大到小排列的数字,不包含相邻的数位大小相同的情况。最大递减数:所输入整数的所有递减数中值最大的一个。 如: 75345323,递减数有:75,753,53,53,532,32。那么最大的递减数为753。
各位数字之和最大的递减数: 如75345323中的各递减数:75各位数之和=12(7+5=12),753各位数之和=15(7+5+3=15),53各位数之和=8(5+3=8),532各位数之和=10(5+3+2=10),32各位数之和=5(3+2=5)。那么各位数字之和最大的递减数为753。输出结果=最大递减数+各位数之和最大的递减数。(1506=753+753)
实现代码如下【机试都是靠华为自己写的程序来判断是否正确的,所以一定要按照华为机试说明来,此次标明类名必须为Main】:
import java.util.ArrayList; import java.util.Scanner; public class Main { public static void main(String[] args) { //构造一个输入扫描对象 Scanner scanner = new Scanner(System.in); //存储输入字符的变量 String input_str = null; //字符串长度变量 int str_size = 0; //输出的和 int sum = 0; //新的字符。 String newstr; //数组用来保存各个数值 String[] array_str; //用来保存最大递减数 int max_int = 0; //最大递减数之和。 int max_sum = 0; //保存递减数 ArrayList<String> list = new ArrayList<String>(); while(true) { //通过用户输入获取一个字符串 input_str = scanner.next(); String reg = "^[-+]?[0-9]+(\\.[0-9]+)?$"; //"^\\d+$"; 匹配正数 //判断是否为数字 boolean isNum = input_str.matches(reg); if(isNum) { //处理负数 if(input_str.startsWith("-")) { input_str = input_str.substring(1,input_str.length()); } //把字符串长度赋给str_size变量 str_size = input_str.length(); array_str = new String[str_size]; for(int i = 0;i < str_size;i++) { array_str[i] = input_str.substring(i,i+1); } for(int i = 0;i < array_str.length;i++) { newstr = new String(); for(int j = i;j < (array_str.length-1);j++) { if(Integer.parseInt(array_str[j]) > Integer.parseInt(array_str[j+1])) { if(j == i) { newstr += array_str[j]+array_str[j+1]; }else { newstr += array_str[j+1]; } list.add(newstr); }else { break; } } } //找出递增最大值,并算出各位数相加最大值。 int number = 0; String str_num; int temp_sum = 0; int i_num=0; int max_num=0; for(int i = 0;i < list.size();i++) { temp_sum = 0; str_num = list.get(i); number = Integer.parseInt(str_num); if(number > max_int) { max_int = number; } for(int j = 0;j<str_num.length();j++) { i_num = Integer.parseInt(str_num.substring(j,j+1)); temp_sum += i_num; } if(temp_sum > max_num) { max_num = temp_sum; max_sum = number; } } System.out.println(max_sum+max_int); }else { //不是数字重新输入 continue; } } } }
题二:
(2)描述: 程序的规格说明要求:
1. 如果第一个字符不是#,则输出N;
2. 如果第一个字符是#,第二个字符不是数字,则输出M;
3. 如果第一个字符是#,例如#n012345则输出从第三个字符开始计算,第0到第n个之间所有字符,n等于3则输出0123,如果n超出长度范围则输出从第三个字符开始全部字符.
请实现上述描述的程序.
题目类别: 字符串
难度: 初级
分数: 60
运行时间限制: 10 Sec
内存限制: 200 MByte
阶段: 应聘考试
输入: 无限制
输出: N、M、对应字符串
样例输入: #3012345
样例输出: 0123
答案提示: 输入输出参数的获取方式
TCL:
gets stdin a gets stdin b puts -nonewline stdout [expr $a+$b] Perl: $a=; $b=; print $a+$b; ruby: import sys a = raw_input() b = raw_input() sys.stdout.write(str(int(a)+int(b))) python: a=STDIN.gets b=STDIN.gets print a.to_i+b.to_i
实现代码如下【机试都是靠华为自己写的程序来判断是否正确的,所以一定要按照华为机试说明来,此次标明类名必须为Main】:
import java.util.Scanner; public class Main { public static void main(String[] args) { //构造一个输入扫描对象 Scanner scanner = new Scanner(System.in); //存储输入字符的变量 String input_str = null; //用来保存第二个字符的变量 String first_str = null; //字符串长度变量 int str_size = 0; //输出的变量 String out_str = null; //要截取的开始位置 int start_index = 0; //要截取的结束位置 int end_index = 0; //要截取的新长度 int new_size=0; //新的字符。 String newstr = null; while(true) { //通过用户输入获取一个字符串 input_str = scanner.next(); //把字符串长度赋给str_size变量 str_size = input_str.length(); //判断字符是否以#开头 if(input_str.startsWith("#")) { //为保证正常截取第二个字符,输入的字符串长度必须要大于1; if(str_size>2) { //截取第二个字符 first_str = input_str.substring(1,2); //通过正则判断是否为数字 String reg = "^\\d+$"; boolean isNum = first_str.matches(reg); if(isNum) { //把字符型数值转化为int类型变量 int strToInt = Integer.valueOf(first_str); //当第二个字符数值大于整个字符串长度时,为避免不出异常, //字符串长度必须大于3 if(str_size >= 3) { newstr = input_str.substring(2,str_size); new_size = newstr.length(); if((strToInt+1) > new_size) { start_index = 0; end_index = new_size; }else { start_index = 0; end_index = (strToInt+1); } } if(end_index > 0) { out_str = newstr.substring(start_index,end_index); System.out.println(out_str); } }else { System.out.println("M"); } } }else { System.out.println("N"); } //重新初始化变量 input_str = null; first_str = null; str_size = 0; out_str = null; start_index = 0; end_index = 0; new_size=0; newstr = null; } } }
标签:style blog color ar 使用 sp java for div
原文地址:http://www.cnblogs.com/luwenbin/p/4099574.html