判斷回文字符串(c,python)


回文字符串:一個字符串,不論是從左往右,還是從右往左,字符的順序都是一樣的(如abba,abcba等)

判斷回文字符串比較簡單,即用兩個變量left,right模仿指針(一個指向第一個字符,一個指向最后一個字符),

每比對成功一次,left向右移動一位,right向左移動一位,如果left與right所指的元素不相等則退出,最后比較

left與right的大小,如果left>right則說明是回文字符串。

 

C語言版:

#include<stdio.h>
#include<string.h>
bool huiwen(char *c)//判斷是否為回文字符串 
{
    int len=strlen(c);
    int left=0,right=len-1;
    while(left<=right)
    {
        if(c[left]==c[right])
        {
            left++;
            right--;
        }
        else
            break;
    }
    if(left>right)
        return true;
    else
        return false;
}
int main()
{
    char c[100];
    printf("請輸入您要判斷的字符串:")
    scanf("%s",c);
    if(huiwen(c))
        printf("Yes\n");
    else
        printf("No\n");
    return 0; 
 } 

 python版:

#嘗試用python判斷回文字符串
while True:
    str=input("please input a string:")#輸入一個字符串
    length=len(str)#求字符串長度
    left=0#定義左右‘指針’
    right=length-1
    while left<=right:#判斷
        if str[left]==str[right]:
            left+=1
            right-=1
        else:
            break;
    if left>right:
        print("yes")
    else :
        print("no")

使用函數判斷:

將字符串反序輸出保存與原字符串比較

 

我們使用切片功能翻轉文本。我們已經了解了我們可以通過使用 seq[a:b] 來從位置 a
始到位置 b 結束來對序列進行切片 。我們同樣可以提供第三個參數來確定切片的步長
Step) 。默認的步長為 1 ,它會返回一份連續的文本。如果給定一個負數步長,如 -1
將返回翻轉過的文本。

def reverse(text):
    return text[::1]

def is_palindrome(text):
    return text==reverse(text)

something = input("Enter text:")
if is_palindrome(something):
    print("Yes,it is a palindrome")
else:
    print("No,it is not a palindrome")

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM