Java刷题常用语法总结

输入输出

Scanner in=new Scann(System.in);
int n=in.nextInt();//读取单个字符;
String s=in.nextLine();//读取整行输入;
//优化:
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String n=inBufferedReader.readLine();

类型转换

//Stinrg类型转换成int;其他同理
Integer.valueOf(string);
Integer.parseInt(string);

最大值最小值

max = Integer.MAX_VALUE;
min = Integer.MIN_VALUE;

String

String s="xxxx";
char[]ch=s.toCharArray();
s.subString(i,j);//截取下标从i到j-1;
String[]ss=s.split("regex");

集合

HashMap
//HashMap
Map<String,String> map = new HashMap<>();
map.put("key","value");
map.getOrDefault("key","default");//if(map.containsKey("key")) return "value" else return "default"
map.get("key"); 
map.containsKey("key");//是否包含指定key;
//集合遍历
//推荐
for(Map.Entry<String,String> entry : map.entrySet()){
    entry.getKey();
    entry.getValue();
} 
 // 推荐
map.forEach((k, v) -> System.out.println(k + " : " + (v + 10))); 
// for
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
for (Integer key : map.keySet()) {
    Integer value = map.get(key);
    System.out.println("Key = " + key + ", Value = " + value);
  }
// 使用Iterator迭代器
        Iterator hmIterator = map.entrySet().iterator(); 

  while (hmIterator.hasNext()) { 
            Map.Entry mapElement = (Map.Entry)hmIterator.next(); 
            int marks = ((int)mapElement.getValue() + 10); 
            System.out.println(mapElement.getKey() + " : " + marks); 
        } 

队列
Queue<Integer> q = new LinkedList<>(); 
 q.peek();
 q.poll();
 q.size();
 q.poll()当没有队列元素;出队会返回null;
    //优先级遍历
PriorityQueue pQueue = new riorityQueue(); 
Iterator itr = pQueue.iterator(); 
while (itr.hasNext()) 
    System.out.println(itr.next()); 

按照指定位置排序

//一种简单做法是通过Arrays.sort()传入新的Compartor对象;来实现按照指定序列排序;比如我们想实现二维数组,按照第一列升序,第二列降序
  Arrays.sort(arr, new Comparator<int[]>()
         {
             public int compare(int[] a, int[] b) {
                 return a[0] == b[0] ?
                     b[1] - a[1] : a[0] - b[0];
             }
         });

输出

            System.out.println(String.format("%.6f",((s-1)/n)*100));//保留6位小数 四舍五入

卡特兰数:

应用:计算栈的合法出栈数量;不同的二叉搜索树
字符串加法
应用Integer.toBinaryString( value)方法将10进制转成成2进制字符串;

  public static void main(String[] args){
        Main m=new Main();
        String a="110101";
        String b="1010110";
        String sum=m.add(a,b);
        System.out.println(sum);
    }
    public String add(String a,String b){
        int sum=Integer.valueOf(a,2)+Integer.valueOf(b,2);
        return Integer.toBinaryString(sum);
    }

你可能感兴趣的:(面试算法)