در این مطلب، ویدئو رمزگذاری و رمزگشایی رشته ها – Leetcode 271 – Python با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:12:16
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,000 –> 00:00:01,839
سلام به همه خوش آمدید و بیایید
2
00:00:01,839 –> 00:00:03,840
امروز یک کد دقیق تر بنویسیم، بنابراین امروز
3
00:00:03,840 –> 00:00:05,279
بیایید مشکل را در
4
00:00:05,279 –> 00:00:08,080
رشته های کد و رمزگشایی حل کنیم تا بتوانید بگویید
5
00:00:08,080 –> 00:00:09,440
این بار رابط کمی متفاوت است
6
00:00:09,440 –> 00:00:09,920
7
00:00:09,920 –> 00:00:11,360
و دلیلش این است که ما قصد داریم
8
00:00:11,360 –> 00:00:13,440
این مشکل را در کد lint حل کنیم.
9
00:00:13,440 –> 00:00:14,320
زیرا
10
00:00:14,320 –> 00:00:16,320
این یک مشکل کد نشت ممتاز است و ما
11
00:00:16,320 –> 00:00:17,440
میتوانیم آن را به صورت رایگان
12
00:00:17,440 –> 00:00:20,400
در کد لینت وبسایت حل کنیم و همچنین
13
00:00:20,400 –> 00:00:23,119
این مشکل از لیست 75 نابینا است که
14
00:00:23,119 –> 00:00:25,279
لیستی از 75 سؤال رایج کد نشت را
15
00:00:25,279 –> 00:00:26,640
که ما در این صفحه گسترده ردیابی کردهایم پیوند میدهیم.
16
00:00:26,640 –> 00:00:27,439
17
00:00:27,439 –> 00:00:28,560
18
00:00:28,560 –> 00:00:30,320
اگر میخواهید نگاهی بیندازید
19
00:00:30,320 –> 00:00:30,720
و
20
00:00:30,720 –> 00:00:32,558
ما تقریباً مشکلات اصلی را تمام کردهایم، در توضیحات آمده است،
21
00:00:32,558 –> 00:00:33,760
من امروز یکی دیگر را حل میکنم،
22
00:00:33,760 –> 00:00:34,640
23
00:00:34,640 –> 00:00:37,280
یک مشکل برتر در رشتههای کد و رمزگشایی،
24
00:00:37,280 –> 00:00:38,719
این یک مشکل بسیار مناسب است.
25
00:00:38,719 –> 00:00:40,480
درک کنید، پس بیایید وارد آن شویم،
26
00:00:40,480 –> 00:00:42,320
بنابراین کمی یک الگوریتم طراحی است،
27
00:00:42,320 –> 00:00:43,360
زیرا ما دو
28
00:00:43,360 –> 00:00:44,800
تابع مختلف خواهیم داشت که میخواهیم
29
00:00:44,800 –> 00:00:46,320
پیادهسازی کنیم، بنابراین
30
00:00:46,320 –> 00:00:49,840
فهرستی از رشتهها به ما داده میشود و میخواهیم دو
31
00:00:49,840 –> 00:00:51,840
تابعی را بنویسیم که میخواهیم رمزگذاری کنیم.
32
00:00:51,840 –> 00:00:54,559
این لیست از رشته ها در یک
33
00:00:54,559 –> 00:00:55,440
رشته واحد است
34
00:00:55,440 –> 00:00:57,039
و می توانید ببینید که در اینجا به
35
00:00:57,039 –> 00:00:58,719
ما یک لیست ورودی از رشته ها داده شده است.
36
00:00:58,719 –> 00:01:02,320
37
00:01:02,320 –> 00:01:04,479
38
00:01:04,479 –> 00:01:05,760
39
00:01:05,760 –> 00:01:08,080
کد
40
00:01:08,080 –> 00:01:09,920
فقط برعکس کد در کد است که به ما
41
00:01:09,920 –> 00:01:12,320
یک رشته داده می شود و
42
00:01:12,320 –> 00:01:14,320
می خواهیم بتوانیم این رشته
43
00:01:14,320 –> 00:01:17,360
را به
44
00:01:17,360 –> 00:01:19,759
لیست اصلی رشته هایی که به ما داده شده است تبدیل کنیم و
45
00:01:19,759 –> 00:01:20,799
این به ما بستگی دارد
46
00:01:20,799 –> 00:01:23,360
چگونه میخواهیم این الگوریتم را طراحی کنیم،
47
00:01:23,360 –> 00:01:25,759
اما بخش دشوار این است
48
00:01:25,759 –> 00:01:27,759
که فرض اصلی این است که
49
00:01:27,759 –> 00:01:29,200
در ورودیهایمان میتوانیم
50
00:01:29,200 –> 00:01:32,640
هر کاراکتر ممکنی را در ورودیها داشته باشیم، نه
51
00:01:32,640 –> 00:01:35,119
فقط به حروف کوچک a تا z، بنابراین
52
00:01:35,119 –> 00:01:36,560
مشکل این است که چگونه
53
00:01:36,560 –> 00:01:38,479
54
00:01:38,479 –> 00:01:40,720
بین هر کلمه نوعی جداکننده ایجاد کنیم چگونه بفهمیم
55
00:01:40,720 –> 00:01:43,119
یک کلمه پایان می یابد و کلمه دیگری شروع می شود،
56
00:01:43,119 –> 00:01:44,240
این همان چیزی است که ما روی آن
57
00:01:44,240 –> 00:01:45,119
تمرکز خواهیم کرد،
58
00:01:45,119 –> 00:01:47,439
بنابراین بیایید وارد آن راه حل
59
00:01:47,439 –> 00:01:49,280
شویم، بنابراین فرض کنید دو رشته مانند این به ما داده شده است.
60
00:01:49,280 –> 00:01:49,759
61
00:01:49,759 –> 00:01:52,799
مرتب و کد و ما وا برای تبدیل آن
62
00:01:52,799 –> 00:01:53,360
به
63
00:01:53,360 –> 00:01:55,520
رشته ای دیگر اساساً به یک
64
00:01:55,520 –> 00:01:56,479
رشته منفرد درست است، بنابراین
65
00:01:56,479 –> 00:01:58,640
یک روش ساده و بی تکلف می تواند چیزی شبیه به این باشد،
66
00:01:58,640 –> 00:01:59,759
فقط کافی است کد خوب را بگویید،
67
00:01:59,759 –> 00:02:02,880
اکنون مشکل مشکلی ندارد، ما این کار را انجام دادیم
68
00:02:02,880 –> 00:02:04,640
که رمزگذاری درست بود،
69
00:02:04,640 –> 00:02:07,040
اما اکنون می خواهیم آن را دوباره به رمزگشایی
70
00:02:07,040 –> 00:02:09,038
کنیم. دو رشته اصلی که ما داشتیم
71
00:02:09,038 –> 00:02:10,878
اما راهی برای تشخیص
72
00:02:10,878 –> 00:02:12,640
درست وجود ندارد زیرا نمیتوانیم به خاطر بیاوریم
73
00:02:12,640 –> 00:02:14,640
که یک کلمه کجا تمام میشود و کلمه دیگر
74
00:02:14,640 –> 00:02:16,239
درست شروع میشود، بنابراین باید یک
75
00:02:16,239 –> 00:02:16,959
نوع
76
00:02:16,959 –> 00:02:19,280
کاراکتر uh یا چیزی برای جدا کردن
77
00:02:19,280 –> 00:02:20,800
کلمات داشته باشیم.
78
00:02:20,800 –> 00:02:23,680
علامت پوند یا چیزی درست،
79
00:02:23,680 –> 00:02:24,480
چیزی شبیه به
80
00:02:24,480 –> 00:02:26,400
این یا هر کاراکتری ممکن است علامت سوال
81
00:02:26,400 –> 00:02:27,599
یا چیزی درست باشد،
82
00:02:27,599 –> 00:02:29,360
اما این مانند کاراکتر خاص ما
83
00:02:29,360 –> 00:02:30,959
است که کلمات را برای ما جدا می
84
00:02:30,959 –> 00:02:31,519
کند،
85
00:02:31,519 –> 00:02:34,080
بنابراین در این مورد درست است که ما
86
00:02:34,080 –> 00:02:34,640
87
00:02:34,640 –> 00:02:36,879
کاراکتر به کاراکتر در هنگامی
88
00:02:36,879 –> 00:02:38,560
که به علامت پوند رسیدیم، ورودی را وارد کنید، می گوییم
89
00:02:38,560 –> 00:02:39,360
که این کلمه
90
00:02:39,360 –> 00:02:42,160
به پایان می رسد، بنابراین می گوییم OK، اولین
91
00:02:42,160 –> 00:02:42,959
کلمه را تمیز می کنیم
92
00:02:42,959 –> 00:02:44,720
و این در هیچ یک از کلمات گنجانده نشده است،
93
00:02:44,720 –> 00:02:46,239
بنابراین از آن می گذریم و سپس به
94
00:02:46,239 –> 00:02:47,599
باقی مانده می رسیم. کد قسمت ng
95
00:02:47,599 –> 00:02:50,000
و هیچ علامت پوند دیگری وجود ندارد،
96
00:02:50,000 –> 00:02:50,640
97
00:02:50,640 –> 00:02:53,440
بنابراین در این مورد درست کار می کند، اما
98
00:02:53,440 –> 00:02:54,319
اساساً
99
00:02:54,319 –> 00:02:55,920
فرض ما زمانی که از این علامت پوند استفاده می کنیم این
100
00:02:55,920 –> 00:02:58,239
است که پوند
101
00:02:58,239 –> 00:03:00,400
هرگز در هیچ کلمه ای ظاهر نمی شود
102
00:03:00,400 –> 00:03:03,920
چه اتفاقی می افتد اگر ما یک کلمه داشته باشید فرض کنید
103
00:03:03,920 –> 00:03:04,720
در کد کلمه ما
104
00:03:04,720 –> 00:03:06,959
در وسط کلمه یک
105
00:03:06,959 –> 00:03:08,000
علامت پوند داریم
106
00:03:08,000 –> 00:03:09,840
، دلیلی ندارد که نتوانیم
107
00:03:09,840 –> 00:03:11,360
چیزی شبیه به این داشته باشیم، بنابراین
108
00:03:11,360 –> 00:03:14,080
وقتی این را می گیریم
109
00:03:14,080 –> 00:03:14,560
و
110
00:03:14,560 –> 00:03:16,720
آن را رمزگذاری می کنیم، دریافت می کنیم چیزی شبیه به
111
00:03:16,720 –> 00:03:18,800
این به عنوان رشته کدگذاری شده درست و
112
00:03:18,800 –> 00:03:20,080
سپس وقتی آن را تقسیم
113
00:03:20,080 –> 00:03:22,560
می کنیم، سه کلمه مختلف
114
00:03:22,560 –> 00:03:23,200
نیت
115
00:03:23,200 –> 00:03:26,239
co و d e خواهیم داشت، اما در نسخه اصلی می توانید
116
00:03:26,239 –> 00:03:27,519
ببینید که ما فقط دو
117
00:03:27,519 –> 00:03:29,599
کلمه داشتیم، اما وقتی خروجی خود را دریافت کردیم، به
118
00:03:29,599 –> 00:03:31,280
پایان می رسیم. با تقسیم کردن این به سه
119
00:03:31,280 –> 00:03:31,760
کلمه
120
00:03:31,760 –> 00:03:33,440
که آن چیزی نیست که ما میخواستیم درست انجام
121
00:03:33,440 –> 00:03:35,200
دهیم، میخواهیم آن را به چیزی که
122
00:03:35,200 –> 00:03:36,720
در ابتدا به ما داده شده بود تبدیل کنیم،
123
00:03:36,720 –> 00:03:38,480
بنابراین داشتن یک
124
00:03:38,480 –> 00:03:40,080
جداکننده کاراکتر خاص کار نمیکند،
125
00:03:40,080 –> 00:03:41,200
زیرا آن جداکننده
126
00:03:41,200 –> 00:03:42,959
در واقع میتواند در برخی از موارد نشان داده شود.
127
00:03:42,959 –> 00:03:44,480
کلمات می توانند
128
00:03:44,480 –> 00:03:47,599
خوب نیست اگر در رشته رمزگذاری شده
129
00:03:47,599 –> 00:03:50,400
قبلاً می
130
00:03:50,400 –> 00:03:51,920
دانستیم که در کلمه اول
131
00:03:51,920 –> 00:03:53,200
چند کاراکتر در
132
00:03:53,200 –> 00:03:54,959
کلمه دوم و غیره قرار می گیرد، بنابراین می
133
00:03:54,959 –> 00:03:56,560
توانیم بگوییم خوب بیایید چهار کاراکتر اول را
134
00:03:56,560 –> 00:03:57,200
135
00:03:57,200 –> 00:03:59,680
رمزگذاری کنیم. به کلمه اول برگردید، سپس
136
00:03:59,680 –> 00:04:01,519
پنج کاراکتر بعدی را بردارید و
137
00:04:01,519 –> 00:04:02,720
آن را در کلمه دوم کدگذاری کنید،
138
00:04:02,720 –> 00:04:04,400
بنابراین چگونه میتوانیم چنین کاری را انجام دهیم،
139
00:04:04,400 –> 00:04:06,480
یکی از راههای آن
140
00:04:06,480 –> 00:04:08,319
اساساً حفظ نوعی آرایه
141
00:04:08,319 –> 00:04:09,519
درست زمانی است که این ورودیهای uh به ما داده میشود.
142
00:04:09,519 –> 00:04:12,080
لیست رشته ها و ما می خواهیم
143
00:04:12,080 –> 00:04:14,159
آن را به یک رشته رمزگذاری کنیم، ما می توانیم
144
00:04:14,159 –> 00:04:16,160
برای هر کلمه اساسا یک
145
00:04:16,160 –> 00:04:17,600
عدد صحیح داشته باشیم، کلمه اول چهار
146
00:04:17,600 –> 00:04:19,120
کاراکتر است، کلمه بعدی پنج
147
00:04:19,120 –> 00:04:21,040
کاراکتر و غیره است، اما پس از آن ما
148
00:04:21,040 –> 00:04:22,079
149
00:04:22,079 –> 00:04:24,960
این لیست را کجا ذخیره کنیم زیرا شما این را می دانید
150
00:04:24,960 –> 00:04:26,639
اگر ما این لیست را در جایی ذخیره می کنیم، راه حل معتبری است،
151
00:04:26,639 –> 00:04:28,320
اما اساساً
152
00:04:28,320 –> 00:04:30,240
در توضیحات آنها نمی خواهند که ما
153
00:04:30,240 –> 00:04:32,479
هیچ نوع متغیر حالت را ذخیره کنیم، این
154
00:04:32,479 –> 00:04:34,479
کدگذاری و رمزگشایی باید
155
00:04:34,479 –> 00:04:37,759
بدون حالت باشند، بنابراین وقتی این لیست را داریم 4 5
156
00:04:37,759 –> 00:04:39,680
ما نمیتوانیم آن را در یک ساختار داده جداگانه ذخیره
157
00:04:39,680 –> 00:04:41,520
کنیم، آیا این امکان برای ما وجود
158
00:04:41,520 –> 00:04:44,800
دارد که آن را در خود رشته ذخیره کنیم، چه
159
00:04:44,800 –> 00:04:45,280
160
00:04:45,280 –> 00:04:47,280
زمانی که ما آن را رمزگذاری میکنیم، میخواهیم بدانیم
161
00:04:47,280 –> 00:04:49,040
خوب از ابتدا در اینجا
162
00:04:49,040 –> 00:04:50,400
چه تعداد از این
163
00:04:50,400 –> 00:04:52,160
کاراکترها در کلمه اول
164
00:04:52,160 –> 00:04:54,000
خوب است چرا آن عدد را
165
00:04:54,000 –> 00:04:55,440
166
00:04:55,440 –> 00:04:58,400
در ابتدای رشته کدگذاری شده
167
00:04:58,400 –> 00:04:59,840
که کار می کند 4 قرار ندهیم زیرا در آن صورت می
168
00:04:59,840 –> 00:05:00,560
توانیم ابتدا
169
00:05:00,560 –> 00:05:02,880
آن را به یک عدد صحیح تبدیل کنیم اما یک
170
00:05:02,880 –> 00:05:04,639
چیز این است که اگر خود کلمه
171
00:05:04,639 –> 00:05:07,199
اعداد صحیحی در آن داشته باشد چه می شود خوب حالا ما به
172
00:05:07,199 –> 00:05:08,479
یک جداکننده دیگر نیاز
173
00:05:08,479 –> 00:05:10,479
داریم، ما باید عدد صحیح خود
174
00:05:10,479 –> 00:05:11,919
را همیشه در ابتدا داشته باشیم، همیشه
175
00:05:11,919 –> 00:05:13,199
یک عدد صحیح در ابتدا وجود خواهد
176
00:05:13,199 –> 00:05:14,800
داشت، رشته همیشه با
177
00:05:14,800 –> 00:05:16,160
یک عدد صحیح شروع می شود که عدد صحیح
178
00:05:16,160 –> 00:05:17,440
نشان دهنده
179
00:05:17,440 –> 00:05:19,680
طول عدد زیر است. کلمه قرار است باشد، اما
180
00:05:19,680 –> 00:05:21,120
ما
181
00:05:21,120 –> 00:05:21,919
182
00:05:21,919 –> 00:05:25,360
بین عدد صحیح و بین خود کلمه یک جداکننده
183
00:05:25,360 –> 00:05:27,120
خواهیم داشت، بنابراین اساساً هر
184
00:05:27,120 –> 00:05:29,759
کاراکتر را میخوانیم تا زمانی که به جداکننده برسیم
185
00:05:29,759 –> 00:05:31,280
و زمانی که به t رسیدیم. he delimiter
186
00:05:31,280 –> 00:05:32,639
ما همه کاراکترهایی را
187
00:05:32,639 –> 00:05:33,759
که میخوانیم و
188
00:05:33,759 –> 00:05:34,960
به یک عدد صحیح تبدیل میشوند را انتخاب میکنیم،
189
00:05:34,960 –> 00:05:37,120
بنابراین این 4
190
00:05:37,120 –> 00:05:38,880
به چهار نگاشت میشود و سپس
191
00:05:38,880 –> 00:05:41,759
چهار کاراکتر بعدی را بعد از
192
00:05:41,759 –> 00:05:42,560
جداکننده میشماریم.
193
00:05:42,560 –> 00:05:44,240
در این مورد، پوند خواهد بود
194
00:05:44,240 –> 00:05:45,600
و این کار می کند، زیرا
195
00:05:45,600 –> 00:05:47,759
ما فقط یک جداکننده
196
00:05:47,759 –> 00:05:49,440
را می خوانیم، همیشه انتظار داریم که
197
00:05:49,440 –> 00:05:52,080
یک علامت واحد پوندی داشته باشیم، مهم نیست که چه درست
198
00:05:52,080 –> 00:05:54,000
است، حتی اگر کاراکتر اول در
199
00:05:54,000 –> 00:05:56,319
اینجا یک پوند باشد. هنوز کار می کند زیرا ما می
200
00:05:56,319 –> 00:05:57,120
خواهیم یک
201
00:05:57,120 –> 00:05:59,520
عدد صحیح چهار را بخوانیم و یک علامت پوند را بخوانیم
202
00:05:59,520 –> 00:06:00,880
و سپس بگوییم خوب است که چهار
203
00:06:00,880 –> 00:06:01,600
کاراکتر بعدی را
204
00:06:01,600 –> 00:06:03,840
حتی اگر شامل پوند باشد، حتی اگر
205
00:06:03,840 –> 00:06:06