Khi cần kiểm tra chuỗi có đối xứng hoặc là palindrome, định nghĩa phương thức dùng điều kiện 'while'. Định nghĩa phương thức khác kiểm tra đối xứng dùng 'while' và 'if'.
Palindrome là số hoặc chuỗi, đọc từ trái sang phải hoặc phải sang trái đều cho cùng giá trị. Các giá trị index giống nhau.
Ví dụ
def check_palindrome(my_str):
mid_val = (len(my_str) - 1) // 2
start = 0
end = len(my_str) - 1
flag = 0
while start < mid_val:
if my_str[start] == my_str[end]:
start += 1
end -= 1
else:
flag = 1
break
if flag == 0:
print("Chuỗi nhập vào là palindrome")
else:
print("Chuỗi nhập vào không phải palindrome")
def check_symmetry(my_str):
n = len(my_str)
flag = 0
if n % 2:
mid_val = n // 2 + 1
else:
mid_val = n // 2
start_1 = 0
start_2 = mid_val
while start_1 < mid_val and start_2 < n:
if my_str[start_1] == my_str[start_2]:
start_1 += 1
start_2 += 1
else:
flag = 1
break
if flag == 0:
print("Chuỗi nhập vào là đối xứng")
else:
print("Chuỗi nhập vào không đối xứng")
my_string = 'phphhphp'
print("Gọi phương thức kiểm tra palindrome...")
check_palindrome(my_string)
print("Gọi phương thức kiểm tra đối xứng...")
check_symmetry(my_string)
Đầu ra
Gọi phương thức kiểm tra palindrome... Chuỗi nhập vào là palindrome Gọi phương thức kiểm tra đối xứng... Chuỗi nhập vào không đối xứng
Giải thích
- Định nghĩa phương thức 'check_palindrome' nhận chuỗi.
- Tính giá trị giữa bằng chia nguyên 2.
- Gán start=0, end=phần tử cuối.
- Biến flag=0.
- Vòng while: nếu start và end bằng nhau, tăng start, giảm end.
- Ngược lại, flag=1, thoát vòng lặp.
- Nếu flag=0 => palindrome, ngược lại không.
- Định nghĩa phương thức 'check_symmetry' nhận chuỗi.
- Gán độ dài chuỗi cho biến.
- Nếu độ dài lẻ, mid_val = n//2+1, ngược lại n//2.
- Gán start_1, start_2.
- Vòng while khác, so sánh và thay đổi start.
- Nếu flag=0 => đối xứng, ngược lại không.