一战通offer

题目一:关于split函数开头和结尾的空格

对于一个给定的字符串,我们需要在线性(也就是O(n))的时间里对它做一些变形。首先这个字符串中包含着一些空格,就像"Hello World"一样,然后我们要做的是把着个字符串中由空格隔开的单词反序,同时反转每个字符的大小写。比如"Hello World"变形后就变成了"wORLD hELLO"。

注:字符串开头的空格,split函数仍人当成分隔符,返回的String[]strs前几个会有相应的空串,但是末尾的空白split不考虑。

import java.util.*;
public class Transform {
    public String trans(String s, int n) {
        // write code here
        if(s == null||n == 0)
            return s;
        int count=0;
        for(int i=s.length()-1;i>=0;i--)//统计字符串末尾的空白个数!
            {
            if(s.charAt(i) == ' ')
                {
                count++;
            }else{
                break;
            }
        }
        String[] strs=s.split(" ");
        StringBuilder sb=new StringBuilder();
        for(int i=0;i<count;i++)
            {
            sb.append(" ");
        }
        for(int i=strs.length-1;i>=0;i--)
            {
            String reverse=reverseWord(strs[i]);
            sb.append(reverse);
            sb.append(' ');
        }
            sb.deleteCharAt(sb.length()-1);
        return sb.toString();
    }
    public String reverseWord(String s){
        if(s == null||s.length() == 0)
            return s;
        StringBuilder sb=new StringBuilder();
        for(int i=0;i<s.length();i++)
            {
            if(s.charAt(i)>='a'&&s.charAt(i)<='z')//小写转大写
                {
                sb.append((char)(s.charAt(i)-'a'+'A'));
            }else{
                sb.append((char)(s.charAt(i)-'A'+'a'));//大写转小写
            }
        }
        return sb.toString();
    }
}

题目二:

对于一棵由黑白点组成的二叉树,我们需要找到其中最长的单色简单路径,其中简单路径的定义是从树上的某点开始沿树边走不重复的点到树上的另一点结束而形成的路径,而路径的长度就是经过的点的数量(包括起点和终点)。而这里我们所说的单色路径自然就是只经过一种颜色的点的路径。你需要找到这棵树上最长的单色路径。

给定一棵二叉树的根节点(树的点数小于等于300,请做到O(n)的复杂度),请返回最长单色路径的长度。这里的节点颜色由点上的权值表示,权值为1的是黑点,为0的是白点。


 注:通过本题找到了二叉树上任一值的最大连通路径的方法。灵活运用二叉树的递归。

/*
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;
    public TreeNode(int val) {
        this.val = val;
    }
}*/
import java.util.*;
public class LongestPath {
    public int findPath(TreeNode root) {
        // write code here
        if(root == null)
            return 0;
        int[] most1=new int[1];
        int[] most0=new int[1];
        mostPath(root,most1,1);
        mostPath(root,most0,0);
        return most1[0]>most0[0]?most1[0]:most0[0];
         
    }
    //值为cur的最长路径
    public int mostPath(TreeNode root,int[] data,int cur)
        {
        if(root == null)
            return 0;
        int current=1;
        if(root.val != cur)
            current=-10000;
        
        int left=mostPath(root.left,data,cur);
        int right=mostPath(root.right,data,cur);
        current+=left+right;
        if(current > data[0])
            data[0]=current;
        if(current > 0)
            {
            if(left > 0||right > 0)
                return left>right?left+1:right+1;
            else
                return 1;
        }else
        return 0;
    }
}



### Offer在IT领域的含义与应用 在IT领域中,“offer常指代一种正式的工作邀请或职位提供。当一家公司决定雇佣某位候选人时,会过书面形式发出工作邀约,即“job offer”。这种文档包含了薪资待遇、岗位职责、福利条款以及其他重要细节[^4]。 #### 工作Offer的核心要素 一份标准的IT行业工作Offer一般应包括以下几个方面: - **职位描述**:清晰说明应聘者即将担任的角色及其主要责任。 - **薪酬结构**:明确基本工资以及可能存在的奖金或其他激励机制。 - **入职时间表**:指定期望的新员工报到日期。 - **合同性质**:全职、兼职还是临时合约等信息都会在此部分体现出来。 此外,在某些情况下特别是对于高级技术人员或者项目负责人来说,可能会附加额外条件比如股权分配方案或者是绩效考核指标等内容。 #### 接受/拒绝Offer注意事项 在接受任何一份Job Offer之前,求职者应当仔细阅读并确认其中的各项条款无误后再签字同意;如果存在疑问之处,则应及时向人力资源部门咨询澄清直至满意为止。同样地,在考虑是否接受某个特定公司的录用知前也需要综合考量个人职业规划目标与发展前景等因素做出明智决策。 ```python class JobOffer: def __init__(self, position_title, salary, start_date, contract_type): self.position_title = position_title # 职位名称 self.salary = salary # 薪资水平 self.start_date = start_date # 开始工作的日期 self.contract_type = contract_type # 合同类型 def display_details(self): """打印工作详情""" details = f"Position Title: {self.position_title}\nSalary: ${self.salary:.2f} per year\nStart Date: {self.start_date}\nContract Type: {self.contract_type}" return details # 创建实例对象表示具体的一份工作Offer new_offer = JobOffer('Software Engineer', 85000, 'January 1st, 2024', 'Full-time') print(new_offer.display_details()) ``` 上述代码定义了一个简单的`JobOffer`类来展示如何建模一个典型的工作机会,并展示了创建此类的一个例子——软件工程师职位的相关参数设置过程。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值