笔试训练(6)-创新互联
笔试题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
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
='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
笔试题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
stack=new Stack<>(); for(int i=0;i
笔试题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
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
当前题目:笔试训练(6)-创新互联
浏览地址:http://myzitong.com/article/didoeo.html