判斷「回文」問題

2021-09-02 17:47:26 字數 988 閱讀 9134

回文字串

回文字串 例如: abcdedcba對稱的字串就是回文字串。

我們知道字串再記憶體中是存在一段連續的空間中的,這樣若想判斷回文字串,根據回文字串的特性,可以使用兩個指標,乙個指標指向字串頭部,另乙個指向尾部。相向一次對比,直到兩個指標相遇,若是每個字元都相同則可判定是回文字串。

int is_pal(char* str)

start++;

end--; }

對稱位置內容相等

return 1;

}int main()

; int ret = 0;

scanf("%s", str);

ret = is_pal(str);

if (ret == 1)

printf("不是回文字串\n");

system("pause");

return 0;

}

回文數字

判斷數字是否是回文數 例如: 1234321

獲取最高位 1234321 / 10^6 = 1

數字除以和它相同數量級的10 的冪

獲取最低位 和10求餘

進行比較

掐頭去尾 在進行比較 掐頭去尾這個數縮小100倍

掐頭: 和相同數量級的10 的冪做 % 運算 1234321 % (10^6) = 234321

去尾: 除10 234321 / 10 = 23432

int is_pal(int n)

//判斷數字是否為回文數

while (n > 9)

//掐頭: 去掉最高位

n %= div;

//去尾: 去掉最低位

n /= 10;

div /= 100;

} return 1;

}int main()

判斷回文串,判斷回文數,最長回文串,回文串的個數

判斷乙個字串是否是回文串,首先了解下它的定義 回文串 是乙個正讀和反讀都一樣的字串,比如 level 或者 noon 等等就是回文串。所以判斷是否是回文串,判斷這個字串是否對稱即可。從而用兩個指標同時向中間掃瞄即可判斷。判斷字串是否是回文串,即判斷是否對稱。兩邊指標同時向中間掃瞄,判斷是否相等,不等...

回文數字判斷

題目描述 有這樣一類數字,他們順著看和倒著看是相同的數,例如 121 656 2332 等,這樣的數字就稱為 回文數字。編寫乙個函式,判斷某數字是否是回文數字。要求實現函式 int ispalindrome int inumber 輸入 inumber 整型數字 輸出 0 不是回文數字 1 是回文數...

棧 回文判斷

判斷乙個棧是不是 回文 回文,英文palindrome,指順著讀和反過來讀都一樣。由棧的資料結構可知,棧是乙個先進後出的資料結構,因此為了判斷該棧是否是乙個回文棧,我們可以將棧的一半彈出來,壓入另外乙個棧,然後再進行判斷他們對於資料是否相同即可。當棧的長度為偶數時 我們只需要彈出一半的資料,然後可直...