java将两个字符串编码/解码为一个字符串,然后返回到两个字符串
这是一个面试问题。我在想一个java解决方案。这个问题似乎很简单,这里有陷阱吗
我想到了以下解决方案:
string1 + 1*hash(String1) + string2 + 2*hash(String2).
如果我像这样压缩字符串,那么我可以很容易地将它们解码成两个单独的字符串
我是不是漏掉了什么问题
你可以在下面搜索框中键入要查询的问题!
这是一个面试问题。我在想一个java解决方案。这个问题似乎很简单,这里有陷阱吗
我想到了以下解决方案:
string1 + 1*hash(String1) + string2 + 2*hash(String2).
如果我像这样压缩字符串,那么我可以很容易地将它们解码成两个单独的字符串
我是不是漏掉了什么问题
# 1 楼答案
编码:
解码:
这里我使用minimal-jsonlib,但它与任何其他JSON库都非常相似
请注意,发明将信息编码为字符串的新格式通常不是一个好主意,因为现有的格式(xml、json、yaml等)已经解决了符号转义和异常处理等所有可能的问题
# 2 楼答案
要编码:
要解码:
说明:
编码字符串的格式为
"<number>/<str1><str2>"
。调用split(regex, limit)
时,结果数组的大小最多为limit
,只考虑regex
的第一个匹配项。因此,即使字符串包含字符/
,也可以确保生成的数组是{"<number>", "<str1><str2>"}
substring(begin, end)
返回一个字符串,从begin
inclusive开始,到end
exclusive结束,得到一个长度为end-begin
的子字符串。因为你用值(0, str1.length())
来调用它,所以你得到的正是str1
。最后一个调用将返回一个子字符串,该子字符串从str1.length()
(也是str2
的第一个字符的索引)到字符串的结尾(即str2
)参考:String javadoc page