编程题 (把字符串转为整数) (不要二)Java实现

点进来你就是我的人了
博主主页:戳一戳,欢迎大佬指点!

人生格言:当你的才华撑不起你的野心的时候,你就应该静下心来学习!

欢迎志同道合的朋友一起加油喔
目标梦想:进大厂,立志成为一个牛掰的Java程序猿,虽然现在还是一个嘿嘿
谢谢你这么帅气美丽还给我点赞!比个心


1.把字符串转换成整数

编程题 (把字符串转为整数) (不要二)Java实现_第1张图片

解题思路:

1.符号位: 两种情况,即 ''+'' , ''-'' ,;新建一个变量保存符号位,返回前判断正负即可。

2.非数字字符: 遇到非数字的字符时,直接立即返回0。

3.数字字符:
字符转数字: “此数字的 ASCII 码” 与 “ 000 的 ASCII 码” 相减即可;
数字拼接: 若从左向右遍历数字,设当前位字符为 c,当前位数字为 x ,数字结果为 res ,则数字拼接公式为:

 此题并没有规定数字边界,拓展对于数字越界的处理

题目指出 环境只能存储 32 位大小的有符号整数 ,因此判断数字越界时,要始终保持 res在 int 类型的取值范围内。

编程题 (把字符串转为整数) (不要二)Java实现_第2张图片

public class Solution {
    public int StrToInt(String str) {
        if (str == null || str.isEmpty()) {
            return 0;
        }
        int len = str.length();
        int i = 0;
        int flag =
            1; //定义一个标志位表示这个数的是正还是负,默认1位正,-1位负
        int res = 0;
        // int boundary = Integer.MAX_VALUE / 10;
        // while (str.charAt(i) == ' ') {
        //     if (++i == len) {
        //         return 0;
        //     }
        // }
        if (str.charAt(i) == '-') {
            flag = -flag;
        }
        if (str.charAt(i) == '+' || str.charAt(i) == '-') {
            i++;
        }
        for (; i < len; i++) {
            char ch = str.charAt(i);
            //如果不是数字字符就返回0
            if (ch < '0' || ch > '9') {
                return 0;
            } else {
                int x = ch - '0';  //每次获取到的数字
                //如果给定了数值范围这样处理
                // if (sum > boundary || sum == boundary && ch > '7') {
                //     return flag == -1 ? Integer.MIN_VALUE : Integer.MAX_VALUE;
                // }
                res = res * 10 + x;
            }
        }
        return res * flag;
    }
}

2.不要二

编程题 (把字符串转为整数) (不要二)Java实现_第3张图片

解题思路:注意这道题的描述稍微有点问题,网格的行坐标是0~(W-1),而网格的列坐标是0~(H-1)

编程题 (把字符串转为整数) (不要二)Java实现_第4张图片编程题 (把字符串转为整数) (不要二)Java实现_第5张图片      编程题 (把字符串转为整数) (不要二)Java实现_第6张图片

编程题 (把字符串转为整数) (不要二)Java实现_第7张图片

   由上面分析我们不难发现,当x1=x2的时候,y1=y2+2,由于每个格子只能放一块蛋糕,(x1,y1)这个坐标放了蛋糕了 ,(x2,y2+2)这个位置就不能再放了,y1=y2同理 

此时我们把网格想象成一个二维数组,于是可以利用数组,由于数组每个元素默认为0,我们可以把每个不可以放当蛋糕的位置置为-11,然后在遍历后面的元素,值为0的表示可以放蛋糕,为了防止越界,我们可以加if条件语句加以限制,具体代码如下:

public class Main
{
    public static void main (String[] args)
    {
        Scanner s = new Scanner(System.in);
        while (s.hasNext())
        {
            int w = s.nextInt();
            int h = s.nextInt();
            int count = 0;
            int[][] arr = new int[w][h];//数组值默认为0
            for (int i=0; i

你可能感兴趣的:(java,开发语言)