笔试训练(6)

news2024/11/19 19:26:59

笔试题1:将一个字符串转化成整数:把字符串转换成整数__牛客网

将一个字符串转化成整数,要求不能使用字符串转化成整数的库函数,数值为0或者字符串不是一个合法的数值那么返回0

输入描述:输入一个字符串,包含数字字母符号,可以为空

返回值叙述:如果是合法的数字表达那么直接返回该数字,否则返回0

1)输入:"+2147483647"

输出:2147483647

2)输入:"1a33"

输出:0

3)输入:"123"

输出:123

 

 

现在我们来进行查看一个正常情况:

1)比如说现在有一个正常的字符串是123,这里面包含了三个字符,一个是字符'1',一个是字符'2',一个是字符'3'

2)但是我们在ASCIL码表中可以看出字符0对应的十进制数是48,字符1对应的十进制数是49,字符2对应的十进制数是50

3)我们如果说想要把一个字符串变成整数,那么就需要套一个公式:sum的初始值是0

sum=sum*10+str[i]-'0'

比如说现在有一个字符串是123

3.1)str[0]='1',sum=0+'1'-'0'=1;

3.2)str[1]='2',sum=1*10+'2'-'0'=12;

3.3)str[2]='3',sum=12*10+'3'-'0'=123;

import java.util.*;
public class Solution {
    public boolean isTrue(char ch){
        if(ch>='0'&&ch<='9'){
            return true;
        }else{
            return false;
        }
    }
    public int StrToInt(String str){
        str=str.trim();//去掉两边的空格
        if(str==null||str.equals("")){
            return 0;
        }//如果说去掉两边的空格之后还是一个空字符串,那么就直接返回0
//1.我们期望先把整个字符串变成一个合法的数字,例如说-123,123之类的        
        StringBuilder sb=new StringBuilder();
        for(int i=0;i<str.length();i++){
            char ch=str.charAt(i);
            if(ch=='+'||ch=='/'){
//如果出现了这两个字符,因为题目说这两个字符是出现在第一行的,所以说直接略过
//拼接成一个空字符串
                sb.append("");                
                continue;
            }
            if(ch=='-'){
                sb.append('-');
                 continue;
            }
            if(isTrue(ch)){
                sb.append(ch);
            }else{
                return 0;
            }
        }
          String result=new String(sb);
        int sum=0;
        boolean flag=false;
        //看看这个字符串在下面遍历的过程中有没有被转化成整数
        int data=1;//负数标志位
//2.经过上面的步骤,我们已经成功把一个字符串转化成了一个合法的只包含整数字符或者是包含字符'-'
//对于出现在第一个字符穿的位置,我们要进行特殊记录一下
        for(int i=0;i<result.length();i++){
            char ch=result.charAt(i);
            if(ch=='-'){
               data=-1; 
            }
            if(isTrue((ch))){
               sum=sum*10+ch-'0';
                flag=true;
            }
        }
        
        if(flag==true){
            //标志位*最终转化的数字
              return data*sum;
        }else{
            //如果说这个字符串只包含-,那么直接返回0
            return 0;
        }
      
    }
}

下面还有一种写法:

import java.util.*;
public class Solution {
    public boolean isTrue(char ch){
        if(ch>='0'&&ch<='9'){
            return true;
        }else{
            return false;
        }
    }
    public int StrToInt(String str){
        if(str==null||str.isEmpty()){
            return 0;
        }
        int flag=1;
//特殊判断第一个字符
        if(str.charAt(0)=='+') flag=1;
        if(str.charAt(0)=='-') flag=-1;
        int sum=0;
        for(int i=0;i<str.length();i++){
//1.这不能从1下标开始因为有可能压根就没有+和-,比如说就是一个123呢?所以说解决方法就是说把字符串变成一个字符数组,如果说判断字符数组的第一个字符为'+'或者是'-'那么就设置标志位
//2.然后将第一个字符设置成字符'0',这样就解决了问题
            if(str.charAt(i)>='0'&&str.charAt(i)<='9'){
               sum=sum*10+str.charAt(i)-'0'; 
            }else{
                if(str.charAt(i)=='+'||str.charAt(i)=='-'){
                    continue;
                }
                sum=0;
                break;
              }
        }
        return flag*sum;
    }
}

 

 笔试题2:不要2不要二_牛客题霸_牛客网

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

这是一个纯数学问题:

1)对于两个格子坐标(X1,Y1),(X2,Y2)的欧几里得距离为:

((X1-X2)*(X1-X2)+(Y1-Y2)*(Y1-Y2))的算术平方根不能等于2

所以说(X1-X2)*(X1-X2)+(Y1-Y2)*(Y1-Y2)的平方不能等于4

2)所以说我们现在就来找一下使得(X1-X2)*(X1-X2)+(Y1-Y2)*(Y1-Y2)的所有情况

3)我们可以对加法表达式进行分解:

1+3=4

3+1=4

2+2=4

0+4=4

4+0=4

所以在这里面我们仔细地分析了一下,前三个表达式是不能够进行存在的

所以说要么是(X1-X2)*(X1-X2)=0和(Y1-Y2)*(Y1-Y2)=4

要么是(X1-X2)*(X1-X2)=4和(Y1-Y2)*(Y1-Y2)=0

4)所以说最终的结果就是: X1=X2,Y2=Y1+2

Y1=Y2,X1=X2+2

5)题目要求是任意两块蛋糕的欧几里得的距离不能等于2,那么也就是说如果我们在

array[i][j]位置处存放了蛋糕,那么array[i+2][j]和array[i][j+2]的位置处就不能存放蛋糕了

6)所以说在我们进行创建数组的时候,数组的默认值都是0,那么如果说这个位置开始进行存放了蛋糕,那么对应位置的array[i+2][j]和array[i][j+2]的位置都不能进行存放蛋糕,那么就手动置为1;

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
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);
    }
}

笔试题3:有效的括号序列:有效括号序列_牛客题霸_牛客网

我们首先要首先要进行注意下了:

一:如果说要判断我们的字符串是否合法

1)字符串只能由括号组成

2)进行括号匹配

二:我们该如何选择一个合适的数据结构呢?

2.1)首先我们要存储遍历过的左括号,我们在这里还需要进行注意最先遍历到的左括号最后被匹配走

2.2)最后遍历到的左括号最先被右括号匹配

2.3)只有当我们遍历完这个字符串之后,栈里面也恰好没有元素了,我们就说左右括号匹配

三:这个题主要有四种情况

1)左右括号匹配

2)左右括号不匹配

3)左括号多

4)右括号多

import java.util.*;


public class Solution {
    public boolean isValid (String str) {
        if(str.length()%2==1){
            //字符串长度是奇数,那么说明此时括号一定不匹配                  
            return false;
        }
        Stack<Character> stack=new Stack<>();
        for(int i=0;i<str.length();i++){
            char ch=str.charAt(i);
            if(ch=='('||ch=='{'||ch=='['){
                //如果是左括号就直接放入到栈里面               
                stack.push(ch);
            }else{
                //只有右括号而没有左括号,或者是右括号太多
                if(stack.isEmpty()){
                    return false;
                }
                char s=stack.pop();
                if((ch==')'&&s=='(')||(ch==']'&&s=='[')||(ch=='}'&&s=='{')){
                }else{
                    //左右括号不匹配
                    return false;
                }
            }
        }
        //说明左括号多
        if(!stack.isEmpty()){
            return false;
        }
        return true;
    }
}

笔试题4:斐波那契额数列Fibonacci数列_牛客题霸_牛客网

思路:

1)我们正常输入了一个正整数N,我们想求它比它小的最近的斐波那契额数列的那个数left和比他大的最近的斐波那契额数列的那一个数right

2)返回right-N和N-left的最小值

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static int GetMin(int x,int y){
            if(x>y) return y;
            return x;
    }  
    public static void main(String[] args) {
         Scanner scanner=new Scanner(System.in);
         int index=scanner.nextInt();
         int a=0;
         int b=1;
         int c=1;
         while(c<index){
               a=b;
               b=c;
               c=a+b;//条件只能写在最下面
               }
         int min=Math.abs(GetMin(index-b,c-index));
         System.out.println(min);
                 
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/110729.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【八股文大白话整理】

Java 重载和重写的区别 这两个都是多态的一种表现形式。 重载是在编译器通过方法中形参的静态类型确定调用方法版本的过程&#xff0c;是多态在编译期的表现形式。判定只有两个条件&#xff1a;1. 方法名一致 2. 形参列表不同 重写是在方法运行时&#xff0c;通过调用者的实际…

Transforming the Latent Space of StyleGAN for Real Face Editing翻译

点击下载论文 摘要 尽管最近在使用StyleGAN进行语义处理方面取得了进展&#xff0c;但真实人脸的语义编辑仍然具有挑战性。W空间和W空间之间的差距要求在重构质量和编辑质量之间进行权衡。为了解决这个问题&#xff0c;我们建议通过用基于注意力的transformers替换StyleGAN映射…

深入剖析Arthas源码

一. 前言 Arthas 相信大家已经不陌生了&#xff0c;肯定用过太多次了&#xff0c;平时说到 Arthas 的时候都知道是基于Java Agent的&#xff0c;那么他具体是怎么实现呢&#xff0c;今天就一起来看看。 首先 Arthas 是在 GitHub 开源的&#xff0c;我们可以直接去 GitHub 上获…

智能表格软件-FineReport JS实现自定义按钮快速给参数赋指定范围值

1. 概述 1.1 预期效果 周报、月报、季报、年报中有参数查询时&#xff0c;每次都需要手动选择&#xff0c;比较繁琐&#xff0c;所以就需要一种快速筛选的方法&#xff0c;只需点击某个按钮&#xff0c;就能准确定位到合适的时间范围&#xff0c;如下图所示&#xff1a; 1.2 实…

JMeter+Ant+Jenkins接口自动化测试框架

一:简介 大致思路&#xff1a;Jmeter可以做接口测试&#xff0c;也能做压力测试&#xff0c;而且是开源软件&#xff1b;Ant是基于Java的构建工具&#xff0c;完成脚本执行并收集结果生成报告&#xff0c;可以跨平台&#xff0c;Jenkins是持续集成工具。将这三者结合起来可以搭…

Hive+Spark离线数仓工业项目实战--环境构建(3)

项目环境配置 根据需求实现项目环境配置 实施 - 注意&#xff1a;所有软件Docker、Hadoop、Hive、Spark、Sqoop都已经装好&#xff0c;不需要额外安装配置&#xff0c;启动即可 配置网络&#xff1a;如果你的VM Nat网络不是88网段&#xff0c;请按照以下修改 - 修改Linux虚拟…

数据改版 | CnOpenData中国工业企业基本信息扩展数据

CnOpenData中国工业企业基本信息扩展数据 一、数据简介 拉动中国经济的三个产业中&#xff0c;工业企业占有特殊的地位&#xff0c;是推动国内经济发展的重要产业。工业是最主要的物质生产部门&#xff0c;为居民生活、各行业的经济活动提供物质产品&#xff0c;这一重要作用是…

vm虚拟机安装VMware Tools弹出‘安装程序无法自动安装

问题出现原因 这个问题是由于微软从2019年12月3日已将Windows驱动程序签名更改为使用SHA-2算法&#xff0c; 不支持SHA-2代码签名的旧版Windows系统将无法通过驱动程序签名验证。 也就是说你的win7或者Windows Server 2008 系统中缺少使用新算法的签名&#xff0c;原来的SHA-…

数据库如何加密连接

文章目录1. 前言2. 如何加密&#xff1f;3. 使用Druid实现加密4. 生成密文5. 添加加密配置6. 隐藏问题7. 开发环境替换公钥8. 生产环境替换公钥9. 运行原理10. 总结1. 前言 现在无论是公司的项目还是个人的项目&#xff0c;都会选择将源码托管在Git服务器&#xff08;Gitee&am…

熬不过“冬天”,又一跨境电商平台关停

熬不过“冬天”&#xff01;又一跨境电商平台关停据相关媒体报道&#xff0c;京东旗下跨境电商服务平台Joybuy于2022年11月4日宣布将进行“业务升级”&#xff0c;而后该平台的所有交易活动已经停止。据Egain News报道&#xff0c;“业务升级”的说法很大可能只是关停的一种“委…

【JavaEE】Cookie 和 Session

努力经营当下&#xff0c;直至未来明朗&#xff01; 文章目录【Cookie和Session】相关方法1. HttpServletRequest类的相关方法2. HttpServletRespon类的相关方法3. HttpSession类中相关的方法&#xff1a;4. Cookie类中相关的方法&#xff1a;写一个模拟登录的案例上传文件Serv…

开源工具系列1:Cloud Custodian

对云安全的检测中&#xff0c;最重要的一个组成部分就是对配置的验证&#xff0c;今天来介绍一个开源的规则检测引擎项目&#xff0c;Cloud Custodian。 一、Cloud Custodian 是什么 Cloud Custodian 是用于管理公有云帐户和资源的规则引擎。规则策略用简单的 YAML 格式&#x…

【TypeScript】class类型讲解

目录 class类型 构造函数 class类的继承 可见修饰符 只读修饰符 class类型 TypeScript支持ES引入的class关键字&#xff0c;并为其添加了类型注解和其他语法(例如&#xff1a;可见性修饰符)。 class person {// 声明初始值&#xff0c;可省略类型注解(TS类型推论为strin…

艾美捷超氧化物歧化酶检测试剂盒,活性检测说明

细胞和细胞外环境中大量的超氧化物歧化酶&#xff08;SOD&#xff09;对于预防与氧化应激相关的疾病至关重要。SOD突变约占家族性肌萎缩侧索硬化症&#xff08;ALS&#xff09;病例的20%。SOD在预防其他神经退行性疾病&#xff08;如阿尔茨海默氏症、帕金森氏症和亨廷顿舞蹈症&…

美丽田园ipo上市,它的底气从何而来?

美丽田园医疗健康产业有限公司(简称美丽田园)&#xff0c;中国最大的传统美容服务提供商&#xff0c;成立近三十年来&#xff0c;一直致力于美与健康的发展&#xff0c;坚持系统化标准化管理和美与健康一站式服务&#xff0c;为顾客提供舒适的美与健康新体验。近日&#xff0c;…

Matter理论介绍-通用-1-04:桥接器-其他功能

【源码、文档、软件、硬件、技术交流、技术支持&#xff0c;入口见文末】 【所有相关IDE、SDK和例程源码均可从群文件免费获取&#xff0c;免安装&#xff0c;解压即用】 持续更新中&#xff0c;欢迎关注&#xff01; 一、桥接器的配置流程 我们已经知道&#xff0c;桥接器和…

【QT】PySide6安装与运用

一、什么是PyQt 简单来说&#xff0c;PyQt就是用Python重构的Qt&#xff0c;一个强大的&#xff0c;创建跨平台GUI(Graphical User Interface)的工具包。开发者为Phil Thompson。 二、PySide与PyQt PyQt和PySide都是基于Python语言对Qt的实现&#xff0c;PyQt的推出时间要比…

paddle nlp taskflow 全家桶 包括代码生成与AIGC图片生成 一起探索paddle nlp 开包即用的能力吧

paddle nlp作为自然语言处理领域的全家桶&#xff0c;具有很多的不错的开箱即用的nlp能力。今天我们来一起看看基于paddle nlp中taskflow开箱即用的能力有哪些。 第一步先升级aistudio中的paddlenlp 保持最新版本。 pip install -U paddlenlpLooking in indexes: https://pypi…

ERP外网访问,快解析助力企业远程办公

ERP系统是现代信息技术和先进管理经验的有效结合&#xff0c;实现对企业经营活动的自动、完整的记录&#xff0c;替代重复劳动&#xff0c;对企业人力资源、物流、资金流、票据流和信息流等的科学管理&#xff0c;实现业务管理数据和财务数据高度统一&#xff0c;实现对企业业务…

论文导读 | 正则路径查询

前言 正则路径查询&#xff08;Regular Path Query, RPQ&#xff09;为带标签的图数据上重要的查询类型之一&#xff0c;旨在找出由至少一条满足条件的路径相连接的结点对&#xff0c;其中需满足的条件以正则表达式表达。当前对 RPQ 的研究以提升查询效率为目的&#xff0c;主…