• leecode#Excel表列序号#组合两个表


    题目描述:

    给你一个字符串 columnTitle ,表示 Excel 表格中的列名称。返回 该列名称对应的列序号 。

    分析:

    法1,进制转换

    这道题要求将Excel 表中的列名称转换成相对应的列序号。由于Excel 表的列名称由大写字母组成,大写字母共有 26 个,因此列名称的表示实质是 26 进制,需要将 26 进制转换成十进制。

    当列名称的长度为 n 时,列名称的每个字母都有 26 种不同的取值,因此长度为 n 的不同列名称有 26^n 个。

    当 n=1 时,列名称的取值范围是 A 到 Z,分别对应 1 到 26。当 n>1 时,首先得到除了最高位以外的 n−1 位部分对应的列序号,然后考虑最高位对列序号的增量。

    上述结论对 n>1 的情况都成立。当 n=1 时,n−1=0,k * 26^(n-1)=k * 1=k,因此 n=1 的情况也适用上述结论。

    ord() 返回值ascii是对应的十进制整数。

    代码:

    1. class Solution:
    2. def titleToNumber(self, columnTitle: str) -> int:
    3. number, multiple = 0, 1
    4. for i in range(len(columnTitle) - 1, -1, -1):
    5. k = ord(columnTitle[i]) - ord("A") + 1 #与26进制不同,从1开始
    6. number += k * multiple
    7. multiple *= 26 #刚好构成k * 26^n-1
    8. return number

    题目描述:

    编写一个SQL查询来报告 Person 表中每个人的姓、名、城市和州。如果 personId 的地址不在 Address 表中,则报告为空  null 。

    以 任意顺序 返回结果表。

    查询结果格式如下所示。

    分析:

    使用outer join

    因为表 Address 中的 personId 是表 Person 的外关键字,所以我们可以连接这两个表来获取一个人的地址信息。

    考虑到可能不是每个人都有地址信息,我们应该使用outer join,而不是默认的inner join

    代码:

    1. select FirstName, LastName, City, State
    2. from Person left join Address
    3. on Person.PersonId = Address.PersonId
    4. ;

  • 相关阅读:
    LeetCode 0714. 买卖股票的最佳时机含手续费
    Android打造专有Hook第四篇,实战增量代码规范检查
    C 程序结构
    Fuxploider:一款针对文件上传漏洞的安全检测与研究工具
    C++面试八股文:了解auto关键字吗?
    Android12之/proc/pid/status参数含义(一百六十五)
    人工智能-机器学习-深度学习-概述
    单位网上营业厅——问题
    Element表格之表头合并、单元格合并
    python(爬虫篇)——Xpath提取网页数据
  • 原文地址:https://blog.csdn.net/weixin_44267765/article/details/128146633