125 驗證回文串

2021-10-09 02:46:44 字數 2113 閱讀 5639

題目:

給定乙個字串,驗證它是否是回文串,只考慮字母和數字字元,可以忽略字母的大小寫。

說明:本題中,我們將空字串定義為有效的回文串。

函式isalnum

int isalnum(int c)功能:

檢查字元是否為字母數字

1.檢查c是十進位制數字還是大寫或小寫字母。

2.如果isalpha或isdigit也返回true,則結果為true。

3.注意,什麼是字母可能取決於所使用的語言環境。在預設的「 c」語言環境中,構成字母的是通過isupper或islower返回true的內容。

4.有關標準ansi i字符集的每個字元的不同ctype函式返回什麼的詳細圖表,請參見< cctype >標頭的參考。

5.在c ++中,此函式的特定於語言環境的模板版本(isalnum)存在於標頭中。

參考連線:

c 庫函式 - tolower()

c 標準庫 - 描述

c 庫函式 int tolower(int c) 把給定的字母轉換為小寫字母。

宣告

下面是 tolower() 函式的宣告。

int tolower(int c);

引數

c – 這是要被轉換為小寫的字母。

返回值

如果 c 有相對應的小寫字母,則該函式返回 c 的小寫字母,否則 c 保持不變。返回值是乙個可被隱式轉換為 char 型別的 int 值。

參考連線:

題解思路:使用雙指標

**第一,**左右指標分別指向 str的兩側;

**第二,**不斷地將這兩個指標相向移動,每次移動一步,並判斷這兩個指標指向的字元是否相同;

**第三,**當這兩個指標相遇時,就說明 str是回文串。

函式**:

class

solution

}int n=str.

size()

;int left=

0, right=n-1;

while

(left < right)

++left;

--right;

}return

true;}

};

方法二:利用c++函式庫翻轉,在判斷字串前後是否相等。最簡單的方法是對字串 ss 進行一次遍歷,並將其中的字母和數字字元進行保留,放在另乙個字串 sgood 中。這樣我們只需要判斷 sgood 是否是乙個普通的回文串即可。

用語言中的字串翻轉 api 得到 sgood 的逆序字串 sgood_rev,只要這兩個字串相同,那麼 sgood 就是回文串。

函式**:

class

solution

} string sgood_rev

(sgood.

rbegin()

, sgood.

rend()

);return sgood == sgood_rev;}}

;

方法三:字串原地前後判斷,雙指標

class

solution

elseif(

!isalnum

(s[right]

)&&left

//tolower大寫字元轉換小寫字元,若小寫字元轉大寫字元是toupper

elseif(

tolower

(s[left])!=

tolower

(s[right]))

else

}return

true;}

};

125 驗證回文串

給定乙個字串,驗證它是否是回文串,只考慮字母和數字字元,可以忽略字母的大小寫。說明 本題中,我們將空字串定義為有效的回文串。示例 1 輸入 a man,a plan,a canal panama 輸出 true示例 2 輸入 race a car 輸出 false解題思路 1 篩選字串,只留下數字和...

125 驗證回文串

125.驗證回文串 給定乙個字串,驗證它是否是回文串,只考慮字母和數字字元,可以忽略字母的大小寫。說明 本題中,我們將空字串定義為有效的回文串。示例 1 輸入 a man,a plan,a canal panama 輸出 true 示例 2 輸入 race a car 輸出 false class ...

125 驗證回文串

給定乙個字串,驗證它是否是回文串,只考慮字母和數字字元,可以忽略字母的大小寫。說明 本題中,我們將空字串定義為有效的回文串。示例 1 輸入 a man,a plan,a canal panama 輸出 true 示例 2 輸入 race a car 輸出 false string的size 函式和l...