• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

[Swift]LeetCode271.加码解码字符串$EncodeandDecodeStrings

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址: https://www.cnblogs.com/strengthen/p/10654164.html 
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

热烈欢迎,请直接点击!!!

进入博主App Store主页,下载使用各个作品!!!

注:博主将坚持每月上线一个新app!!!

Design an algorithm to encode a list of strings to a string. The encoded string is then sent over the network and is decoded back to the original list of strings.

Machine 1 (sender) has the function:

string encode(vector<string> strs) {
  // ... your code
  return encoded_string;
}

Machine 2 (receiver) has the function:

vector<string> decode(string s) {
  //... your code
  return strs;
}

So Machine 1 does:

string encoded_string = encode(strs);

and Machine 2 does:

vector<string> strs2 = decode(encoded_string);

strs2 in Machine 2 should be the same as strs in Machine 1.

Implement the encode and decode methods.

Note:

  • The string may contain any possible characters out of 256 valid ascii characters. Your algorithm should be generalized enough to work on any possible characters.
  • Do not use class member/global/static variables to store states. Your encode and decode algorithms should be stateless.
  • Do not rely on any library method such as eval or serialize methods. You should implement your own encode/decode algorithm.

设计将字符串列表编码为字符串的算法。编码后的字符串通过网络发送,并被解码回原始的字符串列表。

机器1(发送器)具有以下功能:

string encode(vector<string> strs) {
  // ... your code
  return encoded_string;
}

机器2(接收器)具有以下功能:

vector<string> decode(string s) {
  //... your code
  return strs;
}

所以机器1:

string encoded_string = encode(strs);


机器2:

vector<string> strs2 = decode(encoded_string);

机器2中的strs2应与机器1中的strs相同。

实现编码和解码方法。

注:

  • 字符串可以包含256个有效ASCII字符中的任何可能字符。您的算法应该足够通用,可以处理任何可能的字符。
  • 不要使用类成员/全局/静态变量来存储状态。您的编码和解码算法应该是无状态的。
  • 不要依赖任何库方法,如eval或serialize方法。您应该实现自己的编码/解码算法。

Solution

 1 class Codec
 2 {
 3     func encode(_ strs:inout [String]) -> String
 4     {
 5         var res:String = String()
 6         for a in strs
 7         {
 8             res += (String(a.count) + "/" + a)
 9         }
10         return res
11     }
12     
13     func decode(_ s:String) -> [String]
14     {
15         var s = s
16         var res:[String] = [String]()
17         while(!s.isEmpty)
18         {
19             var found:Int = s.find("/")
20             var len:Int = Int(s.subString(0, found)) ?? 0
21             s = s.subString(found + 1)
22             res.append(s.subString(0, len))
23             s = s.subString(len)
24         }
25         return res
26     }
27 }
28 
29 extension String {
30     
31     func find(_ char:Character) -> Int
32     {
33         var arr:[Character] = Array(self)
34         for i in 0..<arr.count
35         {
36             if arr[i] == char
37             {
38                 return i
39             }
40         }
41         return -1
42     }
43     
44     // 截取字符串:从index到结束处
45     // - Parameter index: 开始索引
46     // - Returns: 子字符串
47     func subString(_ index: Int) -> String {
48         let theIndex = self.index(self.endIndex, offsetBy: index - self.count)
49         return String(self[theIndex..<endIndex])
50     }
51     
52     // 截取字符串:指定索引和字符数
53     // - begin: 开始截取处索引
54     // - count: 截取的字符数量
55     func subString(_ begin:Int,_ count:Int) -> String {
56         let start = self.index(self.startIndex, offsetBy: max(0, begin))
57         let end = self.index(self.startIndex, offsetBy:  min(self.count, begin + count))
58         return String(self[start..<end]) 
59     }
60 }

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
1.2 使用Playground学习Swift [Swift原创教程]发布时间:2022-07-14
下一篇:
iOSSwift3用全局“宏”时要注意的问题发布时间:2022-07-14
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap