回文字串的判斷

2021-10-01 09:55:39 字數 1789 閱讀 3987

「回文」指的是乙個字串從前往後讀和從後往前讀都是一樣的,則稱這個字串為回文。比如「qwerewq」是乙個回文字串,「gda534」則不是回文串。在資料結構中,可以通過使用「棧『這種資料結構來實現,這裡單從c語言的語法層面上來實現它。

#include

#include

#include

#include

#pragma warning(disable:4996)

//回文判斷

//初始化字串,其實這一步可以完全不要

#if 0

void

init

(char

*array)

}#endif

//先計算字串的長度

//其實可以呼叫庫函式

//自己實現也可以

intgetstringsize

(char

*array)

這種方法比較笨,需要遍歷整個字串

但是我們知道字串後面都有乙個『\0』

那就不用整個的遍歷整個字串了

}*/while

(*array)

//也可以直接呼叫庫函式,庫函式也跟上面這麼寫的差不多

//但是更簡單

//自己練習一下

return count;

}int

ispalin

(char

*array,

int size)

left++;

right--;

}*///也可以用指標完成

char

*left = array;

char

*right = left + size -1;

while

(left <= right)

else

}return1;

}int

main()

else

system

("pause");

return0;

}

這裡需要明確一下,上面一會用下標引用的方式訪問字串,一會又用指標訪問,其實指標也可以使用下標引用的方式:

比如array[i]也可以寫成*array[i]

//但是一般不這麼寫

兩種方式都可以實現,那麼這是不是一樣的呢?也就是說指標和陣列有什麼關係呢?

答案是不一樣,指標和陣列沒有關係。指標是指標,陣列是陣列,而這裡需要引出乙個概念:陣列在進行引數傳遞時發生降維,降維為其內部型別的指標。而不是發生引數的值拷貝。而且只有陣列傳參時會發生降維

整型陣列傳參時降維為整型型別的指標int*

字元陣列傳參時降維為字元型別指標char*

。。。所以有時候寫函式的引數的時候有時候寫成(int arr)

有時候寫成(int *arr),其實是一樣的

上面的形參其實是個指標,不信可以做個測試:

#include

intgetsize

(int arr)

intmain()

;int size =

sizeof

(arr)

;//看arr占多大空間

int sizeof_arr =

getsize

(arr)

;//可以看看兩個數是不是一樣大

return0;

}

這裡只是說他們的引用方式是一樣的,而陣列和指標其實是沒有關係的,要分清楚一點。至於為什麼是這樣以及更多的疑問以後有機會再說。這裡只是為了不混淆。

判斷回文字串

遞迴入門 所謂回文字串,就是乙個字串,從左到右讀和從右到左讀是完全一樣的。比如 level aaabbaaa 題目 判斷乙個字串是否為回文 解法 遞迴 遞迴的作用在於把問題的規模不斷縮少,直到問題縮少到能簡單地解決 問 如何縮少問題規模?答 通過觀察可以知道,乙個回文字串其中內部也是回文。所以,我們...

判斷回文字串

本題要求編寫函式,判斷給定的一串字元是否為 回文 所謂 回文 是指順讀和倒讀都一樣的字串。如 xyzyx 和 xyzzyx 都是回文。bool palindrome char s 函式palindrome判斷輸入字串char s是否為回文。若是則返回true,否則返回false。include in...

回文字串判斷

問題描述 回文字串指的是乙個順著讀和反過來讀都一樣的字串,比如 abcba poop 等,判斷乙個字串是否是回文字串。這裡提供兩種解法 解法一 同時從字串頭尾開始向中間掃瞄字串,如果所有頭尾字元都一樣,那麼這個字串就是乙個回文字串。採用這種方法,只需要維護頭部和尾部兩個掃瞄指標即可,終止條件是尾指標...