Một chuỗi là một palindrome nếu nó được đọc giống nhau từ phía trước hoặc phía sau. Ví dụ, bố đọc giống nhau từ phía trước hoặc phía sau. Vì vậy, từ cha là một palindrome. Tương tự, madam cũng là một palindrome
ví dụ 1. Kiểm tra Palindrome bằng for Loop
// program to check if the string is palindrome or not
function checkPalindrome[string] {
// find the length of a string
const len = string.length;
// loop through half of the string
for [let i = 0; i < len / 2; i++] {
// check if first and last string are same
if [string[i] !== string[len - 1 - i]] {
return 'It is not a palindrome';
}
}
return 'It is a palindrome';
}
// take input
const string = prompt['Enter a string: '];
// call the function
const value = checkPalindrome[string];
console.log[value];
đầu ra
Enter a string: madam It is a palindrome
Trong chương trình trên, hàm
Enter a string: madam It is a palindrome8 nhận đầu vào từ người dùng
- Độ dài của chuỗi được tính bằng thuộc tính
Enter a string: madam It is a palindrome
9 - Vòng lặp
Enter a string: madam It is a palindrome
0 được sử dụng để lặp đến một nửa chuỗi. Điều kiệnEnter a string: madam It is a palindrome
1 dùng để kiểm tra xem ký tự đầu và ký tự cuối tương ứng có giống nhau không. Vòng lặp này tiếp tục cho đến một nửa chuỗi - Trong quá trình lặp, nếu bất kỳ ký tự nào của xâu khi so sánh với xâu cuối cùng tương ứng của nó không bằng nhau thì xâu đó không được coi là đối xứng
ví dụ 2. Kiểm tra Palindrome bằng Hàm tích hợp
// program to check if the string is palindrome or not
function checkPalindrome[string] {
// convert string to an array
const arrayValues = string.split[''];
// reverse the array values
const reverseArrayValues = arrayValues.reverse[];
// convert array to string
const reverseString = reverseArrayValues.join[''];
if[string == reverseString] {
console.log['It is a palindrome'];
}
else {
console.log['It is not a palindrome'];
}
}
//take input
const string = prompt['Enter a string: '];
checkPalindrome[string];
đầu ra
Enter a string: hello It is not a palindrome
Trong chương trình trên, bảng màu được kiểm tra bằng các phương thức tích hợp có sẵn trong JavaScript
- Phương thức
Enter a string: madam It is a palindrome
2 chuyển đổi chuỗi thành các ký tự mảng riêng lẻ.const arrayValues = string.split['']; // ["h", "e", "l", "l", "o"]
- Phương thức
Enter a string: madam It is a palindrome
3 đảo vị trí trong mảng.// ["o", "l", "l", "e", "h"] const reverseArrayValues = arrayValues.reverse[];
- Phương thức
Enter a string: madam It is a palindrome
4 nối tất cả các phần tử của một mảng thành một chuỗi.Enter a string: madam It is a palindrome
1 - Sau đó, câu lệnh
Enter a string: madam It is a palindrome
5 được sử dụng để kiểm tra xem chuỗi và chuỗi bị đảo ngược có bằng nhau không. Nếu chúng bằng nhau, chuỗi là một palindrome
Ghi chú. Nhiều dòng mã có thể được giảm và viết trong một dòng
Enter a string: madam It is a palindrome3
số Palindrome trong c. Một số palindrome là một số giống nhau sau khi đảo ngược. Ví dụ 121, 34543, 343, 131, 48984 là các số đối xứng
Thuật toán số Palindrome
- Lấy số từ người dùng
- Giữ số trong biến tạm thời
- Đảo ngược số
- So sánh số tạm thời với số đảo ngược
- Nếu cả hai số giống nhau, hãy in số palindrome
- Khác in không số palindrome
Hãy xem chương trình palindrome trong C. Trong chương trình c này, chúng tôi sẽ nhận đầu vào từ người dùng và kiểm tra xem số đó có phải là số nhạt màu hay không
Trong vấn đề này, chúng ta sẽ xem cách tạo số palindromic trong một phạm vi nhất định một cách hiệu quả bằng cách khám phá các mẫu của palindromic.
Mục lục
1 Giới thiệu vấn đề
2 Các phương pháp giải quyết vấn đề
3 Các giải pháp mạnh mẽ
4 Hiểu mô hình
5 Optimized solution for generating palindromic numbers
Giới thiệu vấn đề
Vì vậy, trước hết, chúng ta hãy thảo luận về palindrome là gì, palindrome là một chuỗi đọc ngược giống như đọc xuôi
Thí dụ
Sau đây là các ví dụ về palindromes
XE ĐUA
Nó sẽ được đọc tiến và lùi như minh họa bên dưới
Hãy xem xét thêm một ví dụ
ĐIỀU DƯỠNG
Nó cũng sẽ được đọc tiến và lùi giống như minh họa bên dưới
Vì vậy, bạn thấy trình tự palindrome sẽ được đọc giống nhau bất kể bạn đọc nó như thế nào. e. tiến hoặc lùi
Điều tương tự cũng xảy ra với các số, một số đọc xuôi cũng như đọc xuôi được gọi là số đối xứng
Ví dụ về số palindromic
Một số số đối xứng được cho sau.
11
101
1221
1123211
Bạn có thể thấy bất kể bạn đọc số trên như thế nào, chúng sẽ được đọc giống nhau. e. tiến và lùi
Các cách tiếp cận để giải quyết một vấn đề
Có 2 cách cơ bản để giải quyết mọi vấn đề đã cho
1 Tìm giải pháp của chúng tôi bằng cách tìm kiếm từng cái một trong toàn bộ tập dữ liệu
2 Tạo ra giải pháp phù hợp
giải pháp bạo lực
Vì vậy, cách tiếp cận đầu tiên của hầu hết mọi lập trình viên để giải quyết vấn đề là giải pháp vũ phu, vì vậy hãy thảo luận về giải pháp vũ phu cho vấn đề này
Giải pháp vũ phu cho vấn đề này chỉ đơn giản là thế này
thuật toán
1 bắt đầu lặp lại từ 1 cho đến số đã cho, giả sử N
2 gọi số trong lần lặp là original_number
3 đảo ngược original_number và gọi nó
4 compare the original_number and reverse_number
5 if both are equal print the original_number as palindrome
6 else increment the number which is under the loop by 1 and go to step 2 repeat it until the loop condition will be false
Mã Python
Enter a string: madam It is a palindrome4
Độ phức tạp về thời gian của đoạn mã trên lớn hơn O[n] vì thao tác đảo ngược chuỗi cũng cần thêm thời gian để chuyển đổi một chuỗi thành dạng đảo ngược của nó và nó phụ thuộc vào độ dài của số cũng có thể thay đổi
Vì vậy, đây là giải pháp vũ phu trong giải pháp này, cách tiếp cận của chúng tôi về cơ bản là tìm giải pháp từng giải pháp một trong toàn bộ tập dữ liệu
Hiểu mô hình của các số palindromic
Bây giờ chúng ta sẽ hiểu mô hình của các giải pháp đối xứng sẽ giúp chúng tôi xây dựng giải pháp tối ưu hóa cho một vấn đề. Chúng ta hãy xem lại một số ví dụ về số palindrome.
1
22
3333
1221
144441 . e. các số đối xứng có độ dài lẻ [1, 131, 11411. ] và các số đối xứng có độ dài chẵn [22, 3333, 1221,. ].
131
11411
22322
If we categorize the above numbers based on length, we'll find out that there are two types of palindromic numbers exists i.e. odd length palindromic numbers[1, 131, 11411 ...] and even length palindromic numbers[22, 3333, 1221, ...].
Số palindromic có độ dài lẻ
Nếu chúng ta cố gắng hiểu các số palindromic có độ dài lẻ, chúng ta sẽ thấy một khuôn mẫu trong đó, chữ số ở giữa sẽ khác và các chữ số ở bên phải và bên trái của nó là phản chiếu của nhau.
1 1 2 1 1
1 3 1
2 3 4 3 2
Các số palindromic có độ dài chẵn
Bây giờ hãy cố gắng hiểu quy luật nào tồn tại trong các số đối xứng có độ dài chẵn, trong các số đối xứng có độ dài chẵn, chúng ta thấy rằng các chữ số ở đầu số thì hình ảnh phản chiếu của các chữ số đó nằm ở cuối của số đó . Hãy xem xét các ví dụ sau.
2 2
3 3 3 3
1 2 2 1
Tất cả các số trên đều có độ dài chẵn, hãy thảo luận từng số một
- Trong 22, độ dài của số là hai nếu chúng ta chia nó thành hai phần thì độ dài của mỗi phần sẽ là một chữ số, vì vậy, 2 ở đầu số cũng như ở cuối số đại diện cho gương của chữ số bắt đầu
- Trong 3333 cả hai phần tôi. e. đầu và cuối của các số sẽ chứa hai chữ số, vì vậy 33 ở đầu số và gương của nó cũng là 33 ở cuối số
- Năm 1221, cả hai phần của số đều chứa hai chữ số, phần đầu có 12 và phần cuối có gương là 21, bây giờ hãy xem trong ví dụ này, mô hình các số đối xứng có độ dài chẵn được giải thích rất rõ
Tất cả các số đối xứng có độ dài chẵn đều có cùng một mẫu được giải thích ở trên
Giải pháp tối ưu hóa để tạo số palindromic
Bây giờ chúng tôi hiểu mô hình của các số palindrome, vì vậy chúng tôi có thể xây dựng một giải pháp tối ưu hóa cho vấn đề đã cho. Vì vậy, bây giờ chúng ta biết rằng có hai loại palindromic i. e. số chiều dài chẵn và chiều dài lẻ tồn tại trong bất kỳ phạm vi nhất định nào. Vì vậy, nếu chúng ta suy nghĩ một chút, chúng ta sẽ có thể đưa ra một thuật toán có thể tạo ra cả hai loại số đối xứng trong một phạm vi nhất định
Giả sử chúng ta phải tạo tất cả các số đối xứng nhỏ hơn 104
thuật toán
1 Gọi số đã cho n[trong trường hợp của chúng ta là 104]
2 Bắt đầu lặp lại từ số 1 và gọi nó là i
3 sử dụng i để tạo .
4 print the pal
5 increment i by 1
6 go to step 3 and repeat the process until the pal is less than n.
Sử dụng thuật toán trên một lần nữa để tạo ra các palindromes có độ dài lẻ [i. e. trong bước 3 của thuật toán trên tạo bảng màu chiều dài lẻ]
Khi thuật toán trên hoàn thành, tất cả các đối xứng đã được tạo nhỏ hơn một số đã cho [104]
Bây giờ để làm cho mọi thứ trở nên dễ hiểu, hãy để tôi viết mã thuật toán trên thành hai phần, một phần sẽ tạo ra tất cả các đối xứng có độ dài chẵn và phần còn lại sẽ tạo ra tất cả các đối xứng có độ dài lẻ, cuối cùng, tôi sẽ hợp nhất hai phần này và nghĩ ra
Mã cho palindromes chiều dài chẵn
Enter a string: madam It is a palindrome5
Hãy chạy khô đoạn mã trên của chúng tôi cho số 12
- Ban đầu n = 12
- Điều kiện của chúng ta sẽ đúng và i sẽ là 12 * 10 + [2] = 122
- Bây giờ n sẽ là 1 sau khi thực hiện câu lệnh này n = n // 10
- Điều kiện vẫn đúng và tôi sẽ là 122 * 10 + [1] = 1221
- Bây giờ n sẽ là 0 sau khi thực hiện câu lệnh này n = n // 10
- Bây giờ điều kiện sẽ là sai, i sẽ được trả về từ hàm sẽ là 1221, đây là một bảng màu có độ dài chẵn
Đây là cách chức năng trên sẽ hoạt động để tạo các palindrome có độ dài bằng nhau mà bạn có thể chạy khô hoặc thực thi nó cho bất kỳ số nào
Mã cho palindromes chiều dài lẻ
Enter a string: madam It is a palindrome6
Hãy chạy khô đoạn mã trên của chúng tôi cho số 12
- Ban đầu n = 1
- Điều kiện của chúng ta sẽ đúng và i sẽ là 12 * 10 + [1] = 121
- Bây giờ n sẽ là 0 sau khi thực hiện câu lệnh này n = n // 10
- Bây giờ điều kiện sẽ là sai, i sẽ được trả về từ hàm sẽ là 121, đây là một bảng màu có độ dài lẻ
Đây là cách chức năng trên sẽ hoạt động để tạo các bảng màu có độ dài lẻ mà bạn có thể chạy khô hoặc thực thi nó cho bất kỳ số nào
Mã hoàn chỉnh để tạo tất cả các palindrome nhỏ hơn N
Enter a string: madam It is a palindrome7
Trên đây là đoạn mã hoàn chỉnh để tạo tất cả các bảng màu trong một phạm vi nhất định. Đó là sản phẩm của hai chức năng trên [generate_odd_length_palindromes, generate_odd_length_palindromes] mà tôi đã giải thích để giúp bạn hiểu toàn bộ logic giải quyết vấn đề này