QUIP NG OA

刚刚收到卖力的OA

package salesforce;

public class encode {
    public static void main(String[] args) {
        String s1 = "aaa";
        String s2 = "baaaxxxxxx";
        System.out.println(encode(s1));
        System.out.println(encode(s2));
    }
    public static String encode(String input) {
        final int n = input.length();
        StringBuilder result = new StringBuilder();
        int count = 1;

        for (int i = 1; i < n; i++) {
            if (input.charAt(i) == input.charAt(i - 1)) {
                count++;
            } else {
                String target = findLetter(input.charAt(i - 1));
                result.append(target);
                if (count > 1) {
                    result.append("(" + count + ")");
                }
                count = 1;
            }
        }

        result.append(findLetter(input.charAt(n - 1)));
        if (count > 1) {
            result.append("(" + count + ")");
        }

        return result.toString();
    }

    public static String findLetter(char c) {
        int cnt = c - 'a';
        if (cnt >= 0 && cnt < 9) {
            return Integer.toString(cnt + 1);
        }
        if (cnt >= 9 && cnt < 26) {
            return Integer.toString(cnt + 1) + '#';
        }


        return "";
    }
}


#!/bin/python3
 
import math
import os
import random
import re
import sys
 
 
 
# Complete the sExpression function below.
class TreeNode:
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None
def sExpression(nodes):
    print(nodes)
    error = []
    aj = {}
    nodes = nodes.split(' ')
    for ele in nodes:
        start, end = ele[1], ele[3]
        if start not in aj:
            aj[start] = [end]
        else:
            for cur in aj[start]:
                if end == cur:
                    return 'E2'
            aj[start].append(end)
            if len(aj[start]) > 2:
                return 'E1'
    print(aj)
    visited = set()
    head_set = {}
    for key, child in aj.items():
        child.sort()  
    for key, child in aj.items():
        # print(key, child)   
        if key not in visited:
            pass_by = set()
            node = TreeNode(key)
            if not dfs(key, visited, aj, pass_by, node, head_set, error):
                print(error)
                return error[0]
            head_set[key] = node
    # print(head_set)
    if len(head_set) > 1:
        return 'E4'
    else:
        head = [ele for ele in head_set.values()][0]
        stack = []
        stack.append(head)
        return dfs_tree(head)
def dfs_tree(root):
    if not root:
        return ''
    else:
        left = dfs_tree(root.left)
        right = dfs_tree(root.right)
        return '(' + str(root.val) + left + right + ')'
 
 
def dfs(cur, visited, aj, pass_by, node, head_set, error):
    if node.val in pass_by: # E3
        error.append('E3')
        print('3', error)
        return False
    elif node.val in head_set:
        del head_set[node.val]
        return True
    pass_by.add(node.val)
    if node.val in aj:
 
        for child in aj[node.val]:
            if child in head_set:
                new = head_set[child]
            elif child in visited:
                error.append('E3')
                print('2', error)
                return False
            else:
                new = TreeNode(child)
            if not node.left:
                node.left = new
            elif not node.right:
                node.right = new
            else:
                error.append('E1')
                print('1', error)
                return False
            if not dfs(child, visited, aj, pass_by, new, head_set, error):
                print('10', error)
                return False
    visited.add(node.val)
    return True
if __name__ == '__main__':