در این مطلب، ویدئو تمرین برنامه نویسی پایتون: LeetCode #13 — رومی به عدد صحیح با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:17:12
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:02,080 –> 00:00:03,120
سلام به همه
2
00:00:03,120 –> 00:00:05,359
و به تمرین برنامه نویسی پایتون
3
00:00:05,359 –> 00:00:06,480
4
00:00:06,480 –> 00:00:08,720
در این قسمت خوش آمدید، ما قصد داریم
5
00:00:08,720 –> 00:00:10,080
کد لید
6
00:00:10,080 –> 00:00:13,920
شماره 13 روم 2 عدد صحیح را پوشش
7
00:00:13,920 –> 00:00:16,640
دهیم، این یک مشکل سختی آسان است، بنابراین عبور از آن
8
00:00:16,640 –> 00:00:17,440
9
00:00:17,440 –> 00:00:19,840
خیلی سخت نیست، من با
10
00:00:19,840 –> 00:00:22,160
خواندن توضیحات مشکل شروع می کنم.
11
00:00:22,160 –> 00:00:24,960
بنابراین اعداد رومی با
12
00:00:24,960 –> 00:00:25,439
هفت
13
00:00:25,439 –> 00:00:28,560
نماد مختلف i v x
14
00:00:28,560 –> 00:00:32,320
l c d و m نشان داده می شوند، آنها یک جدول کوچک
15
00:00:32,320 –> 00:00:33,760
از مقادیر در اینجا دارند
16
00:00:33,760 –> 00:00:36,480
که در آن نمادی با مقدار وجود دارد، بنابراین
17
00:00:36,480 –> 00:00:37,040
18
00:00:37,040 –> 00:00:40,719
i ارزش یک V برابر با پنج است و غیره،
19
00:00:40,719 –> 00:00:42,719
بنابراین جدولی از مقدار متفاوت به ما داده می شود.
20
00:00:42,719 –> 00:00:44,239
نگاشت
21
00:00:44,239 –> 00:00:47,680
ها هستند و حالا می گوید برای مثال
22
00:00:47,680 –> 00:00:50,879
دو به عنوان دو از i در یک ردیف نوشته می شود
23
00:00:50,879 –> 00:00:51,760
بله
24
00:00:51,760 –> 00:00:55,360
و فقط دو یکی که دوازده با هم جمع می
25
00:00:55,360 –> 00:00:58,960
شود به صورت x i i نوشته می شود که به سادگی
26
00:00:58,960 –> 00:01:02,239
x است که 10 است به اضافه
27
00:01:02,239 –> 00:01:06,159
دو که دو تا از i است عدد 27
28
00:01:06,159 –> 00:01:09,280
به صورت x x v i
29
00:01:09,280 –> 00:01:12,880
i نوشته می شود که فقط دو x دو ده
30
00:01:12,880 –> 00:01:16,400
به علاوه یک پنج به علاوه دو از آنهایی است که
31
00:01:16,400 –> 00:01:18,640
اعداد رومی معمولاً
32
00:01:18,640 –> 00:01:21,600
از چپ به راست از بزرگ ترین به کوچک ترین نوشته می شوند،
33
00:01:21,600 –> 00:01:25,360
اما عدد چهار
34
00:01:25,360 –> 00:01:28,799
به جای th، چهار i در یک ردیف نیست. e عدد
35
00:01:28,799 –> 00:01:29,200
چهار
36
00:01:29,200 –> 00:01:32,799
به صورت iv نوشته میشود، زیرا قبل از پنج، یک وجود دارد،
37
00:01:32,799 –> 00:01:35,680
آن را کم
38
00:01:35,680 –> 00:01:36,560
39
00:01:36,560 –> 00:01:38,799
میکنیم، همان اصل برای عدد
40
00:01:38,799 –> 00:01:40,400
نه که به صورت ix نوشته میشود صدق میکند
41
00:01:40,400 –> 00:01:43,920
و شش مورد وجود دارد که از
42
00:01:43,920 –> 00:01:47,680
تفریق استفاده میشود و میتوان i را
43
00:01:47,680 –> 00:01:48,320
قبل از
44
00:01:48,320 –> 00:01:52,799
v قرار داد و x را می توان چهار و نه
45
00:01:52,799 –> 00:01:56,719
و x را قبل از l قرار داد و c
46
00:01:56,719 –> 00:02:00,079
را به 40 و 90
47
00:02:00,079 –> 00:02:03,680
و یک c را می توان قبل از d
48
00:02:03,680 –> 00:02:06,960
و m قرار داد تا 400 و
49
00:02:06,960 –> 00:02:10,239
900 شود و سپس یک عدد رومی به کار داده می شود
50
00:02:10,239 –> 00:02:11,200
51
00:02:11,200 –> 00:02:13,680
آن را به یک عدد صحیح تبدیل می کنیم.
52
00:02:13,680 –> 00:02:14,959
به مثالهای اینجا نگاه کنید،
53
00:02:14,959 –> 00:02:17,520
مثال اول به ما یک رشته ورودی
54
00:02:17,520 –> 00:02:18,000
s
55
00:02:18,000 –> 00:02:21,200
از سه i’s در یک ردیف داده میشود که خروجی آن
56
00:02:21,200 –> 00:02:22,000
سه است
57
00:02:22,000 –> 00:02:25,120
زیرا فقط با جمع کردن یک یکی با هم
58
00:02:25,120 –> 00:02:26,160
که سه است.
59
00:02:26,160 –> 00:02:28,160
60
00:02:28,160 –> 00:02:29,200
61
00:02:29,200 –> 00:02:31,840
این یک
62
00:02:31,840 –> 00:02:34,400
حالت خاص است که در آن ما یک تفریق را انجام می دهیم به
63
00:02:34,400 –> 00:02:37,680
طوری که در واقع چهار می شود و سپس
64
00:02:37,680 –> 00:02:38,879
مثال دیگری داریم
65
00:02:38,879 –> 00:02:41,760
اگر رشته ix باشد، این یک
66
00:02:41,760 –> 00:02:44,239
مورد خاص دیگر است که در آن خروجی نه
67
00:02:44,239 –> 00:02:47,599
و مثال چهار l v
68
00:02:47,599 –> 00:02:50,319
i i i خوب به نظر می رسد که در آن
69
00:02:50,319 –> 00:02:52,000
ما در واقع فقط هستیم خیابان مستقیماً با جمع کردن
70
00:02:52,000 –> 00:02:53,120
چیزها،
71
00:02:53,120 –> 00:02:56,160
l 50 به علاوه پنج به علاوه
72
00:02:56,160 –> 00:03:00,080
سه یک می شود 58 و سپس
73
00:03:00,080 –> 00:03:00,959
مثال نهایی در
74
00:03:00,959 –> 00:03:04,280
اینجا mcm
75
00:03:04,280 –> 00:03:07,120
xciv است،
76
00:03:07,120 –> 00:03:11,040
بنابراین حدس می زنم m برابر 1000 باشد، اما پس از آن ما یک
77
00:03:11,040 –> 00:03:12,159
سانتی متر
78
00:03:12,159 –> 00:03:15,440
داریم که مانند 1000 است،
79
00:03:15,440 –> 00:03:17,760
اما c قبل از آن می آید که کوچکتر است.
80
00:03:17,760 –> 00:03:18,800
پس از آن
81
00:03:18,800 –> 00:03:22,159
منهای 100 است پس 1000 است
82
00:03:22,159 –> 00:03:26,080
و سپس سانتی متر 900 می شود و سپس
83
00:03:26,080 –> 00:03:29,840
xc 100 می شود اما
84
00:03:29,840 –> 00:03:31,440
منهای x زیرا قبل از آن یک چیز کوچکتر وجود دارد
85
00:03:31,440 –> 00:03:34,239
بنابراین در واقع 90 است.
86
00:03:34,239 –> 00:03:39,840
بنابراین این 1990 است
87
00:03:39,840 –> 00:03:42,640
و سپس این آخرین مورد IV خوب است که ما
88
00:03:42,640 –> 00:03:44,400
دیدیم قبل از آن یک چهار است
89
00:03:44,400 –> 00:03:48,440
بنابراین چهار است بنابراین خروجی
90
00:03:48,440 –> 00:03:51,760
1994 است. بنابراین این موردی است که در آن
91
00:03:51,760 –> 00:03:53,840
چندین مورد از آن موارد خاص
92
00:03:53,840 –> 00:03:54,799
مختلف وجود دارد،
93
00:03:54,799 –> 00:03:57,760
یکی دو سه مورد خاص مختلف وجود دارد، بنابراین
94
00:03:57,760 –> 00:03:59,680
ما باید قادر به
95
00:03:59,680 –> 00:04:02,400
رسیدگی باشیم رشتههایی که تمام موارد خاص عجیب و غریب را
96
00:04:02,400 –> 00:04:04,080
در خود دارند
97
00:04:04,080 –> 00:04:06,080
و اجازه دهید محدودیتهایی را ببینیم که
98
00:04:06,080 –> 00:04:07,920
قرار است رشتهای بین
99
00:04:07,920 –> 00:04:08,959
100
00:04:08,959 –> 00:04:12,879
1 تا 15 به ما داده شود، بنابراین هیچ حماقت رشته خالی وجود
101
00:04:12,879 –> 00:04:15,680
نخواهد داشت و
102
00:04:15,680 –> 00:04:16,798
رشته
103
00:04:16,798 –> 00:04:19,600
s فقط شامل کاراکترهای مربوط به آن میشود.
104
00:04:19,600 –> 00:04:22,240
آن جدولی که قبلا دیدیم
105
00:04:22,240 –> 00:04:25,440
و همچنین تضمین شده است که
106
00:04:25,440 –> 00:04:28,800
s یک عدد رومی معتبر در
107
00:04:28,800 –> 00:04:32,160
محدوده یک تا یک
108
00:04:32,160 –> 00:04:35,520
کمتر از چهار هزار است، بنابراین
109
00:04:35,520 –> 00:04:37,199
اساساً آنچه از ما خواسته می شود انجام دهیم این
110
00:04:37,199 –> 00:04:39,120
است که فقط
111
00:04:39,120 –> 00:04:42,160
این جدول را برداریم و
112
00:04:42,160 –> 00:04:45,199
بفهمیم که به چه نقشه ای نیاز دارد. از
113
00:04:45,199 –> 00:04:45,759
رشتهای
114
00:04:45,759 –> 00:04:49,759
از این کاراکترها گرفته تا
115
00:04:49,759 –> 00:04:52,160
نمایش اعداد صحیح واقعی
116
00:04:52,160 –> 00:04:53,199
آن باشد،
117
00:04:53,199 –> 00:04:56,080
پس بیایید به ویرایشگر کد برویم
118
00:04:56,080 –> 00:04:56,800
و به این
119
00:04:56,800 –> 00:04:59,520
فکر کنیم که چگونه میتوانیم این را کدنویسی کنیم،
120
00:04:59,520 –> 00:05:02,240
من در واقع از قبل
121
00:05:02,240 –> 00:05:05,280
جدولی را آماده کردم که اساساً فقط
122
00:05:05,280 –> 00:05:07,600
یک نسخه کد است. از جدولی که به ما دادند،
123
00:05:07,600 –> 00:05:10,000
زیرا برای چنین مشکلی
124
00:05:10,000 –> 00:05:12,720
ما تقریباً طبق تعریف
125
00:05:12,720 –> 00:05:13,840
نیاز
126
00:05:13,840 –> 00:05:15,840
به یک جدول داریم تا آن تبدیل ها را
127
00:05:15,840 –> 00:05:17,120
به شکلی انجام دهیم،
128
00:05:17,120 –> 00:05:19,360
بنابراین من فقط می خواهم آن را
129
00:05:19,360 –> 00:05:20,160
فوراً
130
00:05:20,160 –> 00:05:22,160
بچسبانم تا این روم را داشته باشم جدولی در اینجا که
131
00:05:22,160 –> 00:05:24,160
اساساً فقط
132
00:05:24,160 –> 00:05:24,720
از
133
00:05:24,720 –> 00:05:26,800
آنچه به ما داده اند کپی و چسبانده شده است، بنابراین این فقط
134
00:05:26,800 –> 00:05:29,039
یک فرهنگ لغت پایتون خواهد بود که
135
00:05:29,039 –> 00:05:31,520
همه آن نگاشت ها از کلیدهای اعداد رومی
136
00:05:31,520 –> 00:05:32,320
137
00:05:32,320 –> 00:05:36,479
اینجا به مقادیر واقعی
138
00:05:36,479 –> 00:05:39,039
آنها است، بنابراین آنها به ما گفتند که با
139
00:05:39,039 –> 00:05:41,759
اعداد رومی معمولی مقادیر بزرگتر در
140
00:05:41,759 –> 00:05:42,160
141
00:05:42,160 –> 00:05:44,720
سمت چپ و مقادیر کوچکتر در سمت راست هستند
142
00:05:44,720 –> 00:05:45,280
که
143
00:05:45,280 –> 00:05:46,720
تقریباً مشابه چیزی است که ما
144
00:05:46,720 –> 00:05:48,800
با اعداد معمولی به آن عادت کرده ایم، بنابراین
145
00:05:48,800 –> 00:05:51,120
اگر یک عدد رومی مانند این x i i بگیریم،
146
00:05:51,120 –> 00:05:52,720
می توانید این
147
00:05:52,720 –> 00:05:55,280
قسمت x را یک نوع در نظر بگیرید. مانند مکان ده ها
148
00:05:55,280 –> 00:05:56,720
و این قسمت در اینجا
149
00:05:56,720 –> 00:05:59,440
به نوعی مانند مکان یک ها است و اگر بخواهیم
150
00:05:59,440 –> 00:06:00,400
151
00:06:00,400 –> 00:06:02,560
مقدار کل آن
152
00:06:02,560 –> 00:06:04,240
را محاسبه کنیم، می توانیم در واقع
153
00:06:04,240 –> 00:06:08,080
از سمت راست شروع کنیم
154
00:06:08,080 –> 00:06:10,479
و سپس به سمت عقب تکرار کنیم،
155
00:06:10,479 –> 00:06:12,560
اساساً از کوچکترین شروع کنیم.
156
00:06:12,560 –> 00:06:13,520
اعدادی
157
00:06:13,520 –> 00:06:16,400
که ببینیم آیا چیزهای کوچکی داریم یا نه، بنابراین
158
00:06:16,400 –> 00:06:17,039
159
00:06:17,039 –> 00:06:19,680
یک عدد 1 برای آن اضافه می کنیم، می بینیم
160
00:06:19,680 –> 00:06:20,960
که یک عدد 1 برای آن اضافه می کنیم
161
00:06:20,960 –> 00:06:22,639
و سپس چیز بعدی را می بینیم که
162
00:06:22,639 –> 00:06:24,319
برای این یک عدد 10 اضافه می کنیم. زیرا
163
00:06:24,319 –> 00:06:25,120
بزرگتر است
164
00:06:25,120 –> 00:06:27,840
و تنها کاری که باید انجام دهیم این است
165
00:06:27,840 –> 00:06:29,199
که در رشتهای که به ما داده شده است حلقه بزنیم و
166
00:06:29,199 –> 00:06:30,319
از
167
00:06:30,319 –> 00:06:33,199
این و آن طرف برویم و به سادگی
168
00:06:33,199 –> 00:06:34,319
169
00:06:34,319 –> 00:06:38,240
هر مقداری که ارزش آن مورد بعدی است
170
00:06:38,240 –> 00:06:40,560
و تنها زمانی که باید
171
00:06:40,560 –> 00:06:41,840
172
00:06:41,840 –> 00:06:45,039
اگر مقداری را در اینجا ببینیم، کاری متفاوت انجام دهید
173
00:06:45,039 –> 00:06:48,080
at کوچکتر از تصویر کنار آن است،
174
00:06:48,080 –> 00:06:49,759
بنابراین بیایید مثال دیگری را ببینیم
175
00:06:49,759 –> 00:06:52,000
که در آن درست است، بنابراین من آن را پاک می کنم
176
00:06:52,000 –> 00:06:54,400
و فرض کنید به ما
177
00:06:54,400 –> 00:06:56,560
فقط یک IV بسیار ساده داده شده است،
178
00:06:56,560 –> 00:06:59,039
بنابراین اگر این کار را انجام می دادیم،
179
00:06:59,039 –> 00:07:02,080
شروع به شمارش می کردیم می گوییم خوب، ما پنج را دیدیم،
180
00:07:02,080 –> 00:07:04,560
بنابراین آن را به تعداد خود اضافه می کنیم، اما
181
00:07:04,560 –> 00:07:06,400
اگر به چیز بعدی خود خوب نگاه کنیم، در
182
00:07:06,400 –> 00:07:08,800
واقع کوچکتر از
183
00:07:08,800 –> 00:07:10,479
چیزی است که فقط به آن نگاه کردیم، اگر از
184
00:07:10,479 –> 00:07:11,599
این طرف
185
00:07:11,599 –> 00:07:14,080
می آییم، پس چه می کنیم کاری که باید انجام
186
00:07:14,080 –> 00:07:15,520
دهیم این است که
187
00:07:15,520 –> 00:07:18,160
اساساً به ترتیب معکوس چرخش می کنیم و
188
00:07:18,160 –> 00:07:18,800
189
00:07:18,800 –> 00:07:20,560
هر بار مقدار را اضافه می کنیم، اما همچنین
190
00:07:20,560 –> 00:07:22,000
باید بررسی کنیم که آیا
191
00:07:22,000 –> 00:07:25,280
چیزی که به آن نگاه می کنیم کوچکتر از
192
00:07:25,280 –> 00:07:28,000
چیزی است که اکنون دیدیم یا خیر. اگر اینطور باشد،
193
00:07:28,000 –> 00:07:29,360
ما باید به
194
00:07:29,360 –> 00:07:33,199
جای اضافه کردن آن، i را از آن کم کنیم،
195
00:07:33,199 –> 00:07:36,240
زیرا تنها زمانی که یک
196
00:07:36,240 –> 00:07:37,680
مقدار اعداد رومی مانند این را
197
00:07:37,680 –> 00:07:40,000
بعد از چیزی بزرگتر از آن
198
00:07:40,000 –> 00:07:41,759
می بینیم، زمانی که یکی از آن تفریق ها را انجام می دهیم
199
00:07:41,759 –> 00:07:44,080
که احتمالا برای ما کافی است. برای اینکه بتوانیم
200
00:07:44,080 –> 00:07:45,919
یک راه حل را کدنویسی کنیم،
201
00:07:45,919 –> 00:07:47,520
اساساً کاری که می خواهیم انجام دهیم این است که وارد عمل شویم
202
00:07:47,520 –> 00:07:49,120
حلقه رشته را
203
00:07:49,120 –> 00:07:52,080
از طریق آن به سمت عقب قرار دهید، مقداری را
204
00:07:52,080 –> 00:07:53,919
که هر بار به آن نگاه
205
00:07:53,919 –> 00:07:56,080
می کنیم اضافه کنید، اما همچنین باید بررسی کنیم
206
00:07:56,080 –> 00:07:58,000
که آیا مقداری که به آن نگاه
207
00:07:58,000 –> 00:08:01,440
می کنیم واقعا کوچکتر از مقداری است که اخیراً دیدیم
208
00:08:01,440 –> 00:08:01,840
209
00:08:01,840 –> 00:08:04,960
یا خیر. ما باید به
210
00:08:04,960 –> 00:08:07,520
جای اضافه کردن آن را از آن کم کنیم، بنابراین ما آن را راه حل
211
00:08:07,520 –> 00:08:09,759
212
00:08:10,879 –> 00:08:14,560
تکرار معکوس می
213
00:08:14,560 –> 00:08:17,280
نامیم، بنابراین باید
214
00:08:17,280 –> 00:08:18,960
چند مقدار را در اینجا پیگیری
215
00:08:18,960 –> 00:08:21,199
کنیم، ما یک مقدار مقدار اولیه را فهرست می
216
00:08:21,199 –> 00:08:22,960
کنیم تا فقط برای پیگیری وضعیت
217
00:08:22,960 –> 00:08:24,400
ما عدد به این دلیل که
218
00:08:24,400 –> 00:08:26,319
219
00:08:26,319 –> 00:08:28,639
در رشته ای که به ما داده شده حلقه می زنیم به آن اضافه می کنیم و همچنین
220
00:08:28,639 –> 00:08:29,680
221
00:08:29,680 –> 00:08:31,840
متغیری برای پیگیری
222
00:08:31,840 –> 00:08:33,440
آخرین چیزی که دیده ایم خواهیم داشت
223
00:08:33,440 –> 00:08:36,080
زیرا انجام این کار با نمایه سازی ممکن است
224
00:08:36,080 –> 00:08:37,839
کمی دردسرساز باشد
225
00:08:37,839 –> 00:08:40,399
و به خصوص زمانی که
226
00:08:40,399 –> 00:08:42,000
از اولین شاخص شروع می کنیم و نمی
227
00:08:42,000 –> 00:08:43,120
دانیم که آیا لزوماً به i نگاه می کنیم
228
00:08:43,120 –> 00:08:45,200
یا نه، بنابراین تنها کاری که باید انجام دهیم این
229
00:08:45,200 –> 00:08:46,720
است که
230
00:08:46,720 –> 00:08:49,200
یک متغیر را در آخر به i مقداردهی اولیه کنیم، بنابراین ما فقط
231
00:08:49,200 –> 00:08:50,240
فرض کنید که
232
00:08:50,240 –> 00:08:52,160
ما با یک I شروع می کنیم، حتی اگر این کار را
233
00:08:52,160 –> 00:08:54,560
نکنیم، زیرا ما فقط
234
00:08:54,560 –> 00:08:56,320
چیزهایی را می بینی