文章目录
题目一
1.题目
题目链接:不要二
2.思路
3.代码实现
import java.util.*;
public class Main {
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
int w = scanner.nextInt();
int h = scanner.nextInt();
int count = 0;//计数器,初始化为0
int[][]array = new int[w][h];
for(int i =0;i<w;i++){
for(int j =0;j < h;j++){
if(array[i][j] == 0){
count++;
if(i + 2<w){//这里进行判断是防止数组越界
array[i+2][j] = 1;
}
if(j + 2 < h){//这里进行判断是防止数组越界
array[i][j+2] = 1;
}
}
}
}
System.out.println(count);
}
}
4.反思
这题如果让一个初中生或者高中生来想的话可能会更容易想,因为这是一道简单的数学题,可是我在做的时候,却仿佛丢失了数学分析能力,想的方向不对,越想越被动。
这里值得注意的点就是,一是要如何统计蛋糕的防止位置,二是要防止数组的越界。
题目二
1.题目
题目链接:字符串转成整数
2.思路
解题思路非常简单,就是上次计算的结果10,相当于10进制进位,然后加当前位的值。
例如:“123”转换的结果是
sum=0
sum10+1->1
sum10+2->12
sum10+3->123
本题的关键是要处理几个关键边界条件:
1. 空字符串
2. 正负号处理
3. 数字串中存在非法字符
3.代码实现
public class Solution {
public int StrToInt(String str) {
char[] ch = str.toCharArray();
if(str.isEmpty()) return 0;
int flg = 1;
if(ch[0] == '-'){
flg = -1;
ch[0] = '0';//这里是字符'0',不是0
}else if(ch[0] == '+'){
flg = 1;
ch[0] = '0';
}
int sum = 0;
for(int i=0;i < ch.length;++i) {
if(ch[i] < '0' || ch[i] > '9') {
sum = 0;
break;
}
sum = sum *10 + ch[i] - '0';
}
return flg*sum;
}
}