目录
1.数字统计
该题通过枚举和拆分数字来解决问题
首先把【L,R】之间的数字列举出来,这种方式我们称为枚举
再对数字通过余10的方式判断该数字个位、十位、百位是否为2
初次余10只能判断个位,要想判断十位、百位 则需要通过除10的方式进一步舍去之前判断过的位数
因此我们需要先余十判断个位,再除十去掉个位,再余十判断十位 ,依次进行余十除十的操作
2.两个数组的交集
首先我们需要通过查找数字的方式来判断第二个数组中是否包含第一个数组中的数据,这是我们就可以想到查找数字最快的方式那就是hash
其次我们如果new HashMap的话就会创建一个新的容器,创建一个新的容器就会使编译速度下降,题目所给的数字要求比较小为【1,1000】,在这种情况下我们可以创建一个数组来存数据速度会快一些
编译步骤我们分以下步几步进行
import java.util.*;
public class Solution {
public ArrayList<Integer> intersection (ArrayList<Integer> nums1, ArrayList<Integer> nums2) {
// 创建一个boolean类型的数组
// 如果数字存放在数组中那么就显示true
// 如果已经添加的数字我们可以显示 false 来去除这个数字
boolean[] hash = new boolean[1010];
//首先我们把数组一放在hash数组中
for(int x:nums1){
hash[x] = true;
}
//创建一个数组来存贮相同数字
ArrayList<Integer> ret = new ArrayList<>();
//遍历第二个数组 看看 hash里面是否有数组2中的值
// 如果有数组ret就添加
// 同时通过 hash[x] = false 把已经添加的数字去除 避免数字重复
for(int x:nums2){
if(hash[x]){
ret.add(x);
hash[x] = false;
}
}
return ret;
}
}
3.点击消除
方法一:创建一个可变长数组来存放输入的字符数组
public static void main(String[] args){
//输入字符数组a
Scanner sc = new Scanner(System.in);
char[] a = sc.next().toCharArray();
StringBuilder st = new StringBuilder();
for (int i = 0; i < a.length; i++) {
char ch = a[i];
//遍历字符数组 如果创建的 st 不为空 并且 st最上面的元素 和 ch 相同那么就删除这个元素
// 否则就添加这个元素
if(st.length() != 0 && ch == st.charAt(st.length() -1)){
st.deleteCharAt(st.length() -1);
}
else{
st.append(ch);
}
}
// 最后进行输出
System.out.println(st.length() == 0 ? 0 : st.toString());
}
方法二:利用栈来实现
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
String s = in.next();
Stack<Character> st = new Stack<>();
for (int i=0;i<s.length();i++) {
char a = s.charAt(i);//取出第i个元素
if(st.isEmpty()||a!=st.peek()){//如果栈是空的或者第i个数据不是栈顶的数据
st.push(a);//就将数据压入栈中
}else if(a==st.peek()){//如果栈顶的数据为第i个元素的数据
st.pop();//就将栈顶的数据弹出
}
}
if(st.isEmpty()){
System.out.println(0);//如果栈是空的,就直接输出0
}else{
Stack<Character>st2= new Stack<>();
while(!st.isEmpty()){
st2.push(st.pop());
}
while(!st2.isEmpty()){
System.out.print(st2.pop());
}
}//注意放入栈中的数据弹出是反着的,所以要再次放入另一个栈中,这样才是正的
}
}