美文网首页
python3 c++ 和 java

python3 c++ 和 java

作者: winter_sweetie | 来源:发表于2020-04-23 22:46 被阅读0次

    基本语法

    长度

    • python
    s = "hello world"
    li = [1,3,2]
    len(s)
    len(li)
    
    • c++
    s.length()
    li.size()
    
    • java
    li.length
    

    标准化输入&输出

    • python
    print("Hi")
    
    • c++
      在C++中,标准的输入输出是使用iostream库,cin为标准输入,cout为标准输出,cerr为输出警告和报告错误消息。clog是用来输出程序运行的一般信息。
    int v1,v2;  
    cin >> v1 >> v2;  
    cout << v1 + v2 << endl;  
    
    • java
      Java遵循标准I/O的模型,提供了Syetem.in,System.out,以及System.err。
      • System.out是一个已经预先处理过的,被包装成PrintStream的对象。
      • System.err和System.out一样,也是一个PrintStream
      • 但是System.in不是,它是一个未经处理的InputStream。

    也就是说,可以直接使用System.out和System.err打印输出到控制台,但是使用System.in直接读取数据不可以,必须先做处理。

    所以先只看输出吧……

    System.out.println("Hello") //输出信息后追加一个换行
    System.out.print("world") //输出之后不追加换行
    

    for 循环

    • python
    for i in range(len(prices)):
      # do something
    for p in prices:
      # do something
    
    • c++
    for (int i = 0; i < prices.size(); i ++){
    // do something
    }
    for (int p: prices){
    // do something
    }
    // 看一下auto的用法
    // 遍历字符串
    std::string str = “hello, world”;  
    for(auto ch : str) {  
         std::cout << ch << std::endl;  
    }  
    // 遍历数组
    int arr[] = {1, 2, 3, 4};  
    for(auto i : arr) {  
         std::cout<< i << std::endl;  
    } 
    //遍历stl vector,通过引用可修改内存
    std::vector<std::string> str_vec = {"i", "like",  "google"};  
    for(auto& it : str_vec) {  
         it = “c++”;  
    }  
    // 遍历stl map
    std::map<int, std::string> hash_map = {{1, “c++”}, {2, “java”}, {3, “python”}};  
    for(auto it : hash_map) {  
         std::cout << it.first << “\t” << it.second << std::endl;  
    }  
    
    • java
    for (int i = 0; i < prices.length; i++){
    //do something        
    }
    

    无穷

    • python
    a = float('inf')
    b = float('-inf') # b = - float('inf')
    
    • c++
    int a = INT_MAX;
    int b = INT_MIN;
    
    • java
    int a = Integer.MAX_VALUE
    int b = Integer.MIN_VALUE
    

    整除

    • python
    3 // 2 # 1
    3 / 2 # 1.5
    
    • c++
    3 / 2 // 1
    
    • java
    3 / 2 // 1
    

    比较两个数的大小(abs同理)

    • python
    min_num = min(a, b)
    max_num = max(a, b)
    
    • c++
    int min_num = min(a, b);
    int max_num = max(a, b);
    
    • java
    int min_num = Math.min(a, b);
    int max_num = Math.max(a, b);
    

    bool

    • python
    used = [False] * len(nums)
    
    • c++
    vector<bool> used(nums.size(), false);
    
    • java
    boolean[] used= new boolean[nums.length]; # 默认false
    

    数据结构

    数组

    • python
    path = []
    path.append(root.val)
    del path[-1]
    
    • c++
    vector<int> path;
    path.push_back(root -> val);
    path.pop_back();
    
    • java
    // 双端队列
    Deque<Integer> path = new ArrayDeque<>();
    path.addLast(root.val);
    path.removeLast();
    

    二维数组

    • python
    arr = [[0] * n for _ in range(k)]
    
    • c++
    // 方法1 
    //申请空间
    int** a = new int*[rows];
    for(int i = 0; i < rows; i++)
        a[i] = new int[columns];
    //释放空间
    for(int i = 0; i < rows; i++)
        delete []a2[i];
    delete []a2;
    // 方法2 静态初始化
    int a[3][4] = {0,1,2,3,4,5,6,7,8,9,10,11};
    int a2[3][4] = {  
     {0, 1, 2, 3} ,   /*  初始化索引号为 0 的行 */
     {4, 5, 6, 7} ,   /*  初始化索引号为 1 的行 */
     {8, 9, 10, 11}   /*  初始化索引号为 2 的行 */
    };
    // 方法3 vector
    int N = 5, M = 6; 
    vector<vector<int> > obj(N, vector<int>(M)); //定义二维动态数组5行6列 
    // 遍历
    for(int i = 0; i< obj.size(); i++)//输出二维动态数组 
    {
        for(int j = 0; j < obj[i].size(); j++)
        {
            cout << obj[i][j] << " ";
        }
        cout << "\n";
    }
    
    • java
    // new出来的会初始化到0
    // 方法1 固定大小
    int[][] arr=new int[3][2];
    // 方法2 每个一维数组的长度不固定
    int[][] arr=new int[3][];
    arr[0] = new int[2];
    arr[1]= new int[3];
    arr[2]=new int[1];
    // 方法3 静态初始化
    int[][] arr={{1,2,3},{4,6},{6}}
    // 遍历
    public static void printArray(int[][] arr){
        for(int x = 0; x < arr.length; x ++){
            for(int y = 0; y < arr[x].length; y ++){
                System.out.print(arr[x][y]);
            }
            System.out.println();
    }
    //别的方法
    ArrayList<ArrayList<Integer>> resSet = ArrayList<ArrayList<Integer>>();
    ArrayList<Integer> res = new ArrayList<Integer>(3);
    res.add(1);
    res.add(2);
    res.add(3);
    resSet.add(res);
    

    队列

    • python
    from collections import deque
    queue = deque([root])
    n = len(queue)
    curr = queue.popleft()
    if curr.left is not None:
        queue.append(curr.left)
    
    • c++
    queue<TreeNode*> nodeQueue;
    nodeQueue.push(root);
    int n = nodeQueue.size(); 
    TreeNode* curr = nodeQueue.front(); 
    nodeQueue.pop();
    if (curr->left != NULL){
         nodeQueue.push(curr->left);
    }
    
    • java
    Queue<TreeNode> queue = new LinkedList<TreeNode>(); // Queue
    queue.offer(root); // offer
    int n = queue.size();
    TreeNode curr = queue.poll();
    if (curr.left != null){
           queue.offer(curr.left);
    }
    

    • python
    # 节点为空
    if root is None:
    
    • c++
    // 节点为空
    if (root == NULL)
    
    • java
    // 节点为空
    if (root == null)
    

    哈希映射 map

    • python
    # 一般做法,使用dict()
    # 但如果key不存在,直接索引报错;需要收到设置默认值
    words = ['hello', 'world', 'nice', 'world']
    counter = dict()
    for kw in words:
        # 如果不存在,返回默认值;如果存在,返回该值
        counter[kw] = counter.setdefault(kw, 0) + 1
    freq = counter.pop('hello')
    del counter['nice']
    # 高阶做法,使用defaultdict(),可接受factory_function,自动设定默认值
    from collections import defaultdict
    dd = defaultdict(list)
    dd['hh']#defaultdict(<type 'list'>, {'hh': []})
    dd['hh'].append('haha')#defaultdict(<type 'list'>, {'hh': ['haha']})
    # 遍历
    for (key, value) in dd.items():
        if key == value:
            # do something
    
    • c++
      int类型自动默认成0,而且遍历是会自动由小到大排序
    // 定义一个map对象
    map<int, string> mapStudent;
    // 插入
    mapStudent.insert(pair<int, string>(000, "student_zero"));
    mapStudent[123] = "student_first";
    // 查看大小
    int nSize = mapStudent.size();
    // 操作
    for(const auto& p : mapStudent)
        cout << p.first << ": " << p.second << "\n";
    // 删除
    int n = mapStudent.erase("123"); //如果刪除了會返回1,否則返回0
    // 遍历
    map<int, int> m;
    m[1] = 0;
    m[3] = 2;
    m[2] = 3;
    for (auto [k, v] : m){
        cout << k << " " << v << endl;
    }
    // 1 0
    // 2 3
    // 3 2
    
    // 从int到set的映射{1:{1,2,3}, 2:{2,3,4}}
    unordered_map<int, unordered_set<int>> dp;
    for (auto position : stones)
           dp[position] = unordered_set<int>();
    // 在dp中找元素值,如果没找到,就返回dp.end()
    dp.find(position + step - 1) != dp.end()
    
    • java
    // 从int到set的映射{1:{1,2,3}, 2:{2,3,4}}
    HashMap<Integer, HashSet<Integer>> dp =
                new HashMap<Integer, HashSet<Integer>>(stones.length);
    for (int i = 0; i < stones.length; i++) {
                dp.put(stones[i], new HashSet<Integer>() );
            }
    // 返回该key的value
    dp.get(0)
    // 判断是否含有某元素
    dp.containsKey(stone + step)
    
    

    集合 set

    • python
    s = set()
    s.add(1) #s={1}
    s.remove(1)
    len(s) > 0
    
    • c++
    // 第一种
    set<int> s;
    s.insert(8);
    s.erase(8);
    // 第二种
    unordered_set<int> s;
    s.insert(8);
    if s.empty() // true or false
    
    • java
    HashSet<Integer> s = new HashSet<Integer>();
    s.add(8);
    if s.isEmpty()// true or false
    

    排序

    • python
    num = sorted(num)
    
    • c++
    // vector<int> &nums
    sort(nums.begin(), nums.end());
    
    • java
    // int[] nums
    Arrays.sort(num);
    

    边界

    • java
    # int[] A;
    if (A == null) || A.length == 0) return -1;
    

    相关文章

      网友评论

          本文标题:python3 c++ 和 java

          本文链接:https://www.haomeiwen.com/subject/hnyuvhtx.html