You have a database that works with strings of lowercase letters a-z.
The database provides two functions:
insert(str):插入一个字符串。get(query):返回所有大于等于 query 的字符串,并按照递增字典序排列。
例如:
Insert("aaaaa")
Insert("aabaa")
Insert("cdefg")
Insert("aaxyz")
Insert("vwxyz")调用:
Get("aaxyz")会返回:
["aaxyz", "cdefg", "vwxyz"]现在要求实现一个新的数据库,但只能把旧数据库当作底层存储来用。
新数据库需要支持:
OurInsert(str)
OurGet(query)其中:
OurInsert(str):插入字符串。OurGet(query):返回所有小于等于 query 的字符串,并按照递减字典序排列。
例如:
OurInsert("aaaaa")
OurInsert("aabaa")
OurInsert("cdefg")
OurInsert("aaxyz")
OurInsert("vwxyz")调用:
OurGet("aaxyz")应该返回:
["aaxyz", "aabaa", "aaaaa"]这题的关键点其实是:通过字符映射,把原本的字典序反过来。比如 a -> z,b -> y,这样原来小的字符串会变大,原来大的字符串会变小。插入时存转换后的字符串,查询时也转换 query,再调用旧数据库的 get,最后把结果转回来。
这样就能用旧数据库的“查大于等于 + 升序”,实现新数据库的“查小于等于 + 降序”。
CsoaHelp 的面试辅助服务,主要就是帮候选人解决这种问题:
不是只告诉你答案,而是帮你在面试现场快速判断题型、组织思路、解释方案、应对追问。尤其是 Google、OpenAI、Anthropic、Stripe、Meta 这类公司,很多题并不靠刷题原题,而是靠现场拆解能力。
如果你也遇到类似的系统设计、算法变形题、wrapper 设计题,CsoaHelp 可以提供实时面试辅助,帮助你把“看懂题”变成“讲清楚并通过”。
我们也有代面试,面试辅助,OA代写等服务助您早日上岸~

