در این مطلب، ویدئو پردازش رشته در پایتون: پالیندروم است با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,030 –> 00:00:02,250
بسیار خوب، بنابراین در این ویدیو ما قصد داریم
2
00:00:02,250 –> 00:00:04,080
یک تابع پایتون بنویسیم که
3
00:00:04,080 –> 00:00:05,640
به ما امکان می دهد تعیین کنیم که آیا یک
4
00:00:05,640 –> 00:00:08,010
رشته داده شده یک palindrome است یا نه، بنابراین
5
00:00:08,010 –> 00:00:10,139
اگر به یاد داشته باشید یک palindrom رشته ای است
6
00:00:10,139 –> 00:00:11,639
که می توان آن را به صورت جلو و
7
00:00:11,639 –> 00:00:14,880
عقب خواند، بنابراین در اینجا من یک متغیر s
8
00:00:14,880 –> 00:00:17,789
دارم و من یک رشته دارم خوب بود دیدم و
9
00:00:17,789 –> 00:00:19,949
این رشته خاص یک پالیندروم است،
10
00:00:19,949 –> 00:00:21,960
بنابراین متوجه خواهید شد که آیا یک نوع اره
11
00:00:21,960 –> 00:00:24,359
از را می توان به این صورت از خواندن
12
00:00:24,359 –> 00:00:25,949
از جلو در پشت خواند و سپس
13
00:00:25,949 –> 00:00:29,640
اگر به آن نگاه کنید مانند گربه اش بود که من
14
00:00:29,640 –> 00:00:32,520
دیدم همچنین می توان همان را از
15
00:00:32,520 –> 00:00:34,590
اخطار پشتی خواند که ما از
16
00:00:34,590 –> 00:00:36,989
پشت می خوانیم به نوعی بی توجهی به علائم نقطه گذاری
17
00:00:36,989 –> 00:00:40,140
و همچنین فاصله و همچنین حروف بالا
18
00:00:40,140 –> 00:00:41,969
و پایین حروف را عادی می
19
00:00:41,969 –> 00:00:45,270
کند، بنابراین اگر ما باید حالتی را
20
00:00:45,270 –> 00:00:46,980
که همه چیز را با حروف کوچک تبدیل میکند، عادی کنیم،
21
00:00:46,980 –> 00:00:49,620
تمام فاصلهها را حذف کنیم و
22
00:00:49,620 –> 00:00:52,020
تمام علائم نگارشی را حذف کنیم، و اگر رشته
23
00:00:52,020 –> 00:00:54,090
از جلو به عقب و پشت به جلو یکسان خوانده میشود،
24
00:00:54,090 –> 00:00:55,949
آنگاه به
25
00:00:55,949 –> 00:00:57,239
عنوان یک پالیندروم در نظر گرفته میشود،
26
00:00:57,239 –> 00:00:59,910
بنابراین آنچه در اینجا داریم. نظر دهید t
27
00:00:59,910 –> 00:01:03,239
یک راه حل برای این مشکل است که به
28
00:01:03,239 –> 00:01:05,280
نوعی فقط یک خط یا حداقل یک یا
29
00:01:05,280 –> 00:01:07,260
دو خط است که به ما امکان می دهد خیلی سریع
30
00:01:07,260 –> 00:01:09,240
بررسی کنیم که آیا یک رشته داده شده پالیندروم است یا خیر
31
00:01:09,240 –> 00:01:10,799
و من به طور
32
00:01:10,799 –> 00:01:13,080
خلاصه راه حل را شرح می دهم. اما این
33
00:01:13,080 –> 00:01:14,280
راه حل اصلی نخواهد بود که
34
00:01:14,280 –> 00:01:16,470
در این ویدیو به آن خواهیم پرداخت، دلیل آن این است
35
00:01:16,470 –> 00:01:18,390
که این راه حل خاص، در حالی که
36
00:01:18,390 –> 00:01:21,330
کد مختصر، به
37
00:01:21,330 –> 00:01:23,369
فضای اضافی متناسب با
38
00:01:23,369 –> 00:01:26,909
اندازه رشته نیاز دارد، بنابراین این راه حل خاص
39
00:01:26,909 –> 00:01:29,430
به هر دو زمان خطی نیاز دارد. و
40
00:01:29,430 –> 00:01:31,140
فضای خطی و راه حلی که
41
00:01:31,140 –> 00:01:32,850
در این تابع کدگذاری خواهد شد فقط
42
00:01:32,850 –> 00:01:35,340
به یک زمان خطی نیاز دارد، بنابراین اجازه دهید به
43
00:01:35,340 –> 00:01:37,860
طور خلاصه به راه حل بسیار مختصر بپردازم،
44
00:01:37,860 –> 00:01:40,619
بنابراین کاری که من اینجا انجام می دهم این است
45
00:01:40,619 –> 00:01:42,840
که رشته s را دوباره تعریف می کنم.
46
00:01:42,840 –> 00:01:44,640
رشتههایی را که در بالا تعریف کردهایم در
47
00:01:44,640 –> 00:01:47,520
اینجا میگیرم و من اساساً فقط کاری را انجام میدهم که
48
00:01:47,520 –> 00:01:50,189
کم و بیش به عنوان
49
00:01:50,189 –> 00:01:52,680
عادیسازی مورد توضیح دادم و بررسی میکنم که آیا هیچ فاصلهای وجود دارد یا نه
50
00:01:52,680 –> 00:01:54,570
و آنها را حذف میکنم و سپس
51
00:01:54,570 –> 00:01:56,850
بررسی میکنم که آیا کاراکتر وجود دارد یا نه.
52
00:01:56,850 –> 00:01:59,579
که ما در نظر می گیریم یک حرف واقعی است
53
00:01:59,579 –> 00:02:01,229
یا اگر نقطه گذاری یا
54
00:02:01,229 –> 00:02:02,909
چیزی شبیه به آن است، بنابراین اولین
55
00:02:02,909 –> 00:02:04,590
کاری که در این دستور الحاق انجام می دهم این است
56
00:02:04,590 –> 00:02:06,450
که فقط همه چیزها را به هم ملحق می کنم
57
00:02:06,450 –> 00:02:08,220
با این فرض که
58
00:02:08,220 –> 00:02:10,229
الفبای الفبای آن طولانی است. از آنجایی که آنها
59
00:02:10,229 –> 00:02:12,569
علائم نگارشی نیستند، بنابراین این عبارت مشترک
60
00:02:12,569 –> 00:02:13,800
یک رشته به من می دهد
61
00:02:13,800 –> 00:02:17,940
که فقط کاراکترهای واقعی را دارد،
62
00:02:17,940 –> 00:02:18,930
به عنوان مثال اگر ما فقط
63
00:02:18,930 –> 00:02:21,420
آن قسمت از عبارت را در رشته
64
00:02:21,420 –> 00:02:23,160
بالا اعمال کنیم، علامت سوال از بین می رود
65
00:02:23,160 –> 00:02:25,290
اکنون ما نیز با اعمال در بالای آن،
66
00:02:25,290 –> 00:02:27,870
ما جایگزین می کنیم، بنابراین در بالای
67
00:02:27,870 –> 00:02:29,310
رشته ای هستیم که بدون علامت سوال برگردانده شده است،
68
00:02:29,310 –> 00:02:30,810
در این مورد
69
00:02:30,810 –> 00:02:33,060
، رشته ای را برمی گردانیم که تمام فاصله ها را حذف می کند
70
00:02:33,060 –> 00:02:34,740
و فقط آنها را به هیچ تبدیل می
71
00:02:34,740 –> 00:02:38,070
کند، پس رشته بعد از آن
72
00:02:38,070 –> 00:02:40,380
خوب است، بیایید آن را حذف
73
00:02:40,380 –> 00:02:41,850
کنیم تا اولین بیانیه مشترک
74
00:02:41,850 –> 00:02:43,230
از شر آن خلاص شود، این یک علامت سوال است
75
00:02:43,230 –> 00:02:45,300
، بیانیه جایگزین بعدی
76
00:02:45,300 –> 00:02:47,040
از تمام فضاها خلاص می شود، بنابراین ما
77
00:02:47,040 –> 00:02:49,430
چیزی شبیه به این خواهیم داشت و
78
00:02:49,430 –> 00:02:52,920
سپس و دیگر بیانیه نهایی مبنی بر اینکه
79
00:02:52,920 –> 00:02:53,850
ما در واقع تابع نهایی
80
00:02:53,850 –> 00:02:55,200
را که روی این رشته اعمال می کنیم اعمال
81
00:02:55,200 –> 00:02:57,990
82
00:02:57,990 –> 00:03:00,780
می کنیم، فقط حروف کوچک را عادی می کند، بنابراین کاری که انجام می دهد این است که فقط
83
00:03:00,780 –> 00:03:02,700
همه کاراکترهای بزرگ در
84
00:03:02,700 –> 00:03:05,130
رشته را با کاراکترهای کوچک جایگزین می کنیم تا به این نتیجه
85
00:03:05,130 –> 00:03:06,930
برسیم. چیزی شبیه به این، بنابراین اجازه دهید من
86
00:03:06,930 –> 00:03:09,390
آن را به حالت اولیه بازگردانم و
87
00:03:09,390 –> 00:03:11,220
اجازه دهید این عبارت چاپی را از کامنت خارج کنم،
88
00:03:11,220 –> 00:03:13,470
در واقع به من اجازه دهید فقط s را چاپ کنم تا
89
00:03:13,470 –> 00:03:15,150
بتوانیم بررسی کنیم که در واقع همان چیزی است که
90
00:03:15,150 –> 00:03:17,580
رشته به نظر می رسد، بنابراین اجازه دهید این را بنویسم
91
00:03:17,580 –> 00:03:19,980
و سپس آن را ارائه کنیم در واقع
92
00:03:19,980 –> 00:03:21,720
میبینیم که علائم نقطهگذاری که از بین رفته است،
93
00:03:21,720 –> 00:03:23,760
فاصلهها از بین رفتهاند و همه موارد
94
00:03:23,760 –> 00:03:25,890
عادی میشوند، بنابراین آخرین کاری که
95
00:03:25,890 –> 00:03:28,050
انجام میدهیم، حدس میزنم این خط دوم در اینجا این
96
00:03:28,050 –> 00:03:29,910
است که فقط چاپ میکنیم که آیا این
97
00:03:29,910 –> 00:03:31,620
عبارت زیر درست است یا نه یا
98
00:03:31,620 –> 00:03:33,450
غلط کاری که ما انجام میدهیم این است که بررسی میکنیم
99
00:03:33,450 –> 00:03:35,400
آیا رشته s برابر است یا خیر،
100
00:03:35,400 –> 00:03:37,440
بنابراین وقتی
101
00:03:37,440 –> 00:03:38,790
جلوتر رفتیم و تمام
102
00:03:38,790 –> 00:03:41,040
پیش پردازشها را در این خط انجام دادیم،
103
00:03:41,040 –> 00:03:43,140
فقط بررسی میکنیم آیا er یا نه، عکس
104
00:03:43,140 –> 00:03:44,520
رشته را می توان به همان روشی که رشته معمولی خوانده می شود،
105
00:03:44,520 –> 00:03:46,680
و اگر چنین است،
106
00:03:46,680 –> 00:03:48,930
پس آن پالیندروم است و اگر نه،
107
00:03:48,930 –> 00:03:50,520
برای مثال اگر عبارت را روی
108
00:03:50,520 –> 00:03:52,350
رشته بالا اجرا کنیم، باید درست دریافت کنیم،
109
00:03:52,350 –> 00:03:54,600
زیرا در واقع رشته یک
110
00:03:54,600 –> 00:03:55,430
پالیندروم
111
00:03:55,430 –> 00:03:59,070
است که باز هم این کار می کند اما
112
00:03:59,070 –> 00:04:02,000
نیاز به فضای اضافی دارد، بنابراین ما
113
00:04:02,000 –> 00:04:04,739
راه حل دیگری را در نظر خواهیم گرفت که حل آن فقط
114
00:04:04,739 –> 00:04:07,560
به زمان خطی نیاز دارد
115
00:04:07,560 –> 00:04:09,480
زیرا البته باید تمام
116
00:04:09,480 –> 00:04:11,190
رشته را کاراکتر به کاراکتر مرور کنیم، هیچ
117
00:04:11,190 –> 00:04:13,620
راه واقعی برای حل آن وجود ندارد. در حال پردازش
118
00:04:13,620 –> 00:04:15,360
هر یک از کاراکترهای رشته برای
119
00:04:15,360 –> 00:04:18,000
تعیین اینکه آیا آن یک palindrome مشکلی ندارد، بنابراین
120
00:04:18,000 –> 00:04:19,589
اکنون بیایید در مورد راه حلی برای این
121
00:04:19,589 –> 00:04:21,690
مشکل فکر کنیم که به فضای خطی نیاز ندارد،
122
00:04:21,690 –> 00:04:23,580
اما فقط به زمان خطی نیاز دارد،
123
00:04:23,580 –> 00:04:25,890
به طوری که ما می خواهیم
124
00:04:25,890 –> 00:04:27,450
در اینجا به این مشکل نزدیک شوید این است که ما
125
00:04:27,450 –> 00:04:27,690
126
00:04:27,690 –> 00:04:29,610
باید به تکرار کننده ها نیاز داشته باشیم و
127
00:04:29,610 –> 00:04:32,910
آن تکرار کننده ها را inj می نامیم بنابراین i یک تکرار کننده است
128
00:04:32,910 –> 00:04:34,110
که از جلوی
129
00:04:34,110 –> 00:04:35,580
رشته شروع می شود و کاراکتر به کاراکتر i پیشرفت می کند
130
00:04:35,580 –> 00:04:37,680
. n رشته و
131
00:04:37,680 –> 00:04:39,690
از جلو به عقب می خواند J
132
00:04:39,690 –> 00:04:40,860
تکرار کننده ای خواهد بود که از پشت
133
00:04:40,860 –> 00:04:42,600
شروع می شود و از پشت شروع می شود و
134
00:04:42,600 –> 00:04:44,280
به سمت جلو می رود و کاراکتر به
135
00:04:44,280 –> 00:04:46,230
کاراکتر را در آنجا می خواند بنابراین این دو نباید
136
00:04:46,230 –> 00:04:47,220
در نقطه ای به هم برسند.
137
00:04:47,220 –> 00:04:49,650
بنابراین تکرارکننده I از جلو
138