Javase第三周期leetcode编程题
1.停车问题
请你给一个停车场设计一个停车系统。停车场总共有三种不同大小的车位:大,中和小,每种尺寸分别有固定数目的车位。
请你实现 ParkingSystem 类:
ParkingSystem(int big, int medium, int small) 初始化 ParkingSystem 类,三个参数分别对应每种停车位的数目。
bool addCar(int carType) 检查是否有 carType 对应的停车位。 carType 有三种类型:大,中,小,分别用数字 1, 2 和 3 表示。一辆车只能停在 carType 对应尺寸的停车位中。如果没有空车位,请返回 false ,否则将该车停入车位并返回 true 。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/design-parking-system
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路以及代码
利用一个数组来模拟停车位,每个类型对应数组的一个位置。
停车就是判断当前类型车辆是否有余位(>0),每次停车相应的停车位-1
首先有三种车辆分三种车位
public class ParkingSystem
{
int[] carContainer = new int[3];
public ParkingSystem(int big, int medium, int small)
{
//分三种车辆
carContainer[0] = big;
carContainer[1] = medium;
carContainer[2] = small;
}
用boolean型做判断,判断车位上是否有车辆
public boolean addCar(int carType)
{
if (carContainer[carType - 1] > 0)
{
carContainer[carType - 1]–;
return true;
}
return false;
}
}
2.字符串相等
给你两个字符串数组 word1 和 word2 。如果两个数组表示的字符串相同,返回 true ;否则,返回 false 。
数组表示的字符串 是由数组中的所有元素 按顺序 连接形成的字符串。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/check-if-two-string-arrays-are-equivalent
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路
用指针
是对两个组各开两个指针,一个指向遍历到的字符串的下标,另一个指向遍历到的字符串的哪个字符的下标。然后对两个数组同时进行遍历,遇到不一样的字符就返回false。最后遍历完之后,如果某个数组没遍历完也要返回false。
3.宝石和石头
给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。
J 中的字母不重复,J 和 S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/jewels-and-stones
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路
创建两个数组代表石头和宝石,取出每个S数组中的字符,判断J中是否包含这个字符,包含的话加自加
lass Solution {
public int numJewelsInStones(String J, String S) {
int j = J.length();
int s = S.length();
if(J == 0 || S == 0 || J ==null || S == null) return 0;
int count = 0;
for(int i=0;i< S;i++) {
char c= S.charAt(i);
if(J.contains(String.valueOf(c)))
count++;
}
return count;
}
}