• 算法训练---Day3


    一 : 将字符串转化为整数

    链接 : 将字符串转化为整数

    1.题目

    将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为 0 或者字符串不是一个合法的数值则返回 0
    数据范围:字符串长度满足 0 \le n \le 100 \0≤n≤100
    进阶:空间复杂度 O(1) \O(1) ,时间复杂度 O(n) \O(n)
    注意:
    ①字符串中可能出现任意符号,出现除 +/- 以外符号时直接输出 0 ;
    ②字符串中可能出现 +/- 且仅可能出现在字符串首位。

    2.解题

    2.1思路分析

    在这里插入图片描述
    这里演示的是一种最普通的情况 , 即不带符号的正数 . 如果是带符号的正数/负数呢 ?

    以+123为例 :

    在这里插入图片描述

    至于最后元素的符号 , 则容易处理 , 可以设置标志位 , 在最后输出整数时进行判断 !

    2.2代码实现

    java代码
    import java.util.*;
    public class Solution {
        public int StrToInt(String str) {
            if (str == null || str.length() == 0) {
                return 0;
            }
            char[] arr = str.toCharArray();
            boolean flag = true;//默认为+
            if (str.charAt(0) == '-') {
                flag = false;
                arr[0] = '0';
            }
            if (str.charAt(0) == '+') {
                arr[0] = '0';
            }
            int num = 0;
            for (int i = 0; i < arr.length; i++) {
                if (arr[i] >= '0' && arr[i] <= '9') {
                    num = num * 10 + (arr[i] - '0');
                } else {
                    return 0;
                }
            }
            return flag ? num : -num;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    二 : 不要二

    链接 : 不要二

    1.题目

    二货小易有一个W*H的网格盒子,网格的行编号为0H-1,网格的列编号为0W-1。每个格子至多可以放一块蛋糕,任意两块蛋糕的欧几里得距离不能等于2。
    对于两个格子坐标(x1,y1),(x2,y2)的欧几里得距离为:
    ( (x1-x2) * (x1-x2) + (y1-y2) * (y1-y2) ) 的算术平方根
    小易想知道最多可以放多少块蛋糕在网格盒子里。

    2.解题

    2.1思路分析

    在这里插入图片描述

    2.2代码实现

    java代码
    import java.util.*;
    public class Main{
        public static void main(String[] args){
            Scanner scanner = new Scanner(System.in);
            int m = scanner.nextInt();
            int n = scanner.nextInt();
            int[][] array = new int[m][n];
            int count = 0;
            for(int i=0;i<m;i++){
                for(int j=0;j<n;j++){
                    if(array[i][j] == 0){
                        count++;
                        if(j+2 < n){
                            array[i][j+2] = 1;                            
                        }
                        if(i+2 < m){
                            array[i+2][j] = 1;                        
                        }
                    }
                }
            }
            System.out.println(count);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
  • 相关阅读:
    ChatGPT Plugin开发setup - Java(Spring Boot) Python(fastapi)
    将Vue项目迁移到微信小程序中
    Ubuntu本地快速搭建web小游戏网站,公网用户远程访问【内网穿透】
    快速排序详解-java实现
    Java版企业电子招标采购系统源码—企业战略布局下的采购寻源
    一行代码统计文本中指定字符串出现的次数
    数据结构初步(二)- oj练习-时间与空间复杂度
    框架外的PHP读取.env文件(php5.6、7.3可用版)
    Iis7.0-7.5 fast-cgi解析漏洞
    01Linux中安装Nginx的步骤
  • 原文地址:https://blog.csdn.net/baijaiyu/article/details/126957613