最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語(yǔ)言算法打卡回文串驗(yàn)證算法題解

 更新時(shí)間:2022年02月16日 10:55:43   作者:?jiǎn)虇碳业凝堼? 
這篇文章主要為大家介紹了C語(yǔ)言算法打卡萬(wàn)人千提的leetcode回文串的驗(yàn)證算法題解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步

概念

所謂回文串,就是字符串反轉(zhuǎn)以后和原串相同,如 abba 和 lippil。對(duì)于回文串還是比較容易去驗(yàn)證的,從字符數(shù)組的兩端開(kāi)始向中間靠攏去驗(yàn)證字符是否相等,但這里是否需要考慮字符數(shù)組長(zhǎng)度的奇偶性呢?其實(shí)是不用的,下面一起來(lái)看看:

Leetcode例題:

1.回文串的驗(yàn)證

2.有效回文

3.回文排列

(1,2題是一樣的,合并講解吧)

點(diǎn)殺回文排列

先講回文排列吧,簡(jiǎn)單一點(diǎn)。首先我們的思路要清楚,無(wú)非就是找出相同的字符并統(tǒng)計(jì)他出現(xiàn)的次數(shù),我們保證每個(gè)字符只能出現(xiàn)偶數(shù)次,最多允許一個(gè)字符出現(xiàn)奇數(shù)個(gè)(奇數(shù)位字符串的中間元素)

代碼如下:

char Func(char* s)
{
	int  i, count = 0;
	int a[128] = { 0 };
	int sz = strlen(s);//計(jì)算字符數(shù)組長(zhǎng)度來(lái)作為循環(huán)判斷部分
	for (i = 0; i < sz; i++)
	{
		a[s[i]]++;//統(tǒng)計(jì)相同字符出現(xiàn)次數(shù),有點(diǎn)像哈希表
	}
	for (i = 0; i < 128; i++)
	{
		if (a[i] % 2 == 1)//判斷出現(xiàn)次數(shù)是否為偶數(shù)
			count++;
		if (count >= 2)//判斷是否最多存在一個(gè)出現(xiàn)奇數(shù)次的元素
			return false;
	}
	return true;
}

注意,這里面有一些重要細(xì)節(jié):

1.數(shù)組 s 為 char 類(lèi)型,字符數(shù)組在內(nèi)存中存儲(chǔ)方式是ASCII碼值,s[ i ]就是在一一列舉其中元素,假如我收到一個(gè) ‘ a ’,a以ASCII碼值作為下標(biāo)++,第二個(gè)‘ a ’找到后依然是用相同的ASCII碼值作為下標(biāo)再++;這就是我統(tǒng)計(jì)數(shù)組中相同元素的次數(shù)的原理。

2. 數(shù)組初始化 a [128]不能更改是因?yàn)锳SCII碼值一共是128個(gè),0~127。

3.強(qiáng)調(diào)最多一位為奇數(shù)次出現(xiàn)的字符的特殊情況。

點(diǎn)殺回文驗(yàn)證(有效性)

這道題就是典型的指針對(duì)撞題,因?yàn)轭}目告訴考慮數(shù)字和字符,我們寫(xiě)的時(shí)候就可以不考慮字符的大小寫(xiě),這種方法需要靈活使用庫(kù)函數(shù)。

需要先判斷字符串中的字符是字母或數(shù)字,若不是,就pass掉。在 C 語(yǔ)言中可以用 isalnum() 函數(shù)去判斷。

忽略字母的大小寫(xiě),所以可以將待比較的字符轉(zhuǎn)化為小寫(xiě)或大寫(xiě),然后再比較。在 C 語(yǔ)言中可以用 tolower() 和 toupper() 函數(shù)。

對(duì)撞指針

一根指針指向頭,滿足條件時(shí),往右移動(dòng);一根指針指向尾,滿足條件時(shí),往左移動(dòng);最后兩根指針相遇,循環(huán)條件一般是前下標(biāo)(指針)小于后下標(biāo)(指針)。

送上代碼:

char Fun(char * s)
{
    int left = 0, right = strlen(s) - 1;
    while (left < right) 
    {       //篩選出數(shù)字與字符
        if (!isalnum(s[left])) {
            left++; 
        } else if (!isalnum(s[right])) {
            right--;
        } else { //合并為小寫(xiě)(大寫(xiě))來(lái)判斷
            if (tolower(s[left]) != tolower(s[right])) {
                return false;
            }            
            left++;
            right--;
        }
    }
    return true;
    }         

今天就到這里了家人們,先摸了。

以上就是C語(yǔ)言算法打卡回文串驗(yàn)證算法題解的詳細(xì)內(nèi)容,更多關(guān)于C語(yǔ)言回文串算法驗(yàn)證的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C++人工模擬棧實(shí)現(xiàn)方法

    C++人工模擬棧實(shí)現(xiàn)方法

    在本篇內(nèi)容里小編為大家整理了關(guān)于C++人工模擬棧實(shí)現(xiàn)方法和步驟,需要的朋友們可以學(xué)習(xí)下。
    2018-12-12
  • C++中的取余函數(shù)remainder與fmod詳解

    C++中的取余函數(shù)remainder與fmod詳解

    這篇文章主要為大家詳細(xì)介紹了C++中的取余函數(shù)remainder、fmod的具體使用以及自編的remainder及fmod,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)學(xué)習(xí)
    2023-05-05
  • C語(yǔ)言基于EasyX庫(kù)實(shí)現(xiàn)有顏色彈跳小球

    C語(yǔ)言基于EasyX庫(kù)實(shí)現(xiàn)有顏色彈跳小球

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言基于EasyX庫(kù)實(shí)現(xiàn)有顏色彈跳小球,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • C語(yǔ)言編程數(shù)據(jù)結(jié)構(gòu)帶頭雙向循環(huán)鏈表全面詳解

    C語(yǔ)言編程數(shù)據(jù)結(jié)構(gòu)帶頭雙向循環(huán)鏈表全面詳解

    這篇文章主要為大家介紹了C語(yǔ)言編程的數(shù)據(jù)結(jié)構(gòu)中帶頭雙向循環(huán)鏈表全面詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助祝大家多多進(jìn)步,早日升職加薪
    2021-10-10
  • c語(yǔ)言 深入理解函數(shù)的遞歸

    c語(yǔ)言 深入理解函數(shù)的遞歸

    這一章講解的是函數(shù)的遞歸,因?yàn)檫f歸函數(shù)是一個(gè)非常重要求解復(fù)雜問(wèn)題的方法之一,在學(xué)習(xí)算法的過(guò)程之中我們也會(huì)遇到他,所以我想對(duì)它進(jìn)行一次講解,希望能幫助其他人,也能幫助我自己來(lái)梳理一遍。下面我會(huì)通過(guò)一些題目的講解去認(rèn)識(shí)遞歸函數(shù)
    2022-02-02
  • C++利用eigen庫(kù)實(shí)現(xiàn)求歐拉角

    C++利用eigen庫(kù)實(shí)現(xiàn)求歐拉角

    這篇文章主要為大家詳細(xì)介紹了C++如何利用eigen庫(kù)自帶的matrix.eulerAngles()函數(shù)實(shí)現(xiàn)求歐拉角,文中的示例代碼講解詳細(xì),有需要的小伙伴可以參考下
    2023-11-11
  • 一波C語(yǔ)言二元查找樹(shù)算法題目解答實(shí)例匯總

    一波C語(yǔ)言二元查找樹(shù)算法題目解答實(shí)例匯總

    這篇文章主要介紹了一波C語(yǔ)言二元查找樹(shù)算法題目解答實(shí)例匯總,包括按層次遍歷和轉(zhuǎn)換為鏡像等基本算法題目,需要的朋友可以參考下
    2016-03-03
  • C++ std::async的使用總結(jié)

    C++ std::async的使用總結(jié)

    這篇文章主要介紹了C++ std::async的使用總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單彈跳球游戲

    C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單彈跳球游戲

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單彈跳球游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • 用C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單掃雷小游戲

    用C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單掃雷小游戲

    這篇文章主要為大家詳細(xì)介紹了用C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單掃雷小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07

最新評(píng)論

章丘市| 三门峡市| 曲阳县| 康保县| 西林县| 柳江县| 洛阳市| 万年县| 和静县| 凤冈县| 安泽县| 新津县| 临城县| 哈尔滨市| 张北县| 鞍山市| 东源县| 呼伦贝尔市| 临武县| 庆安县| 祁门县| 安仁县| 嘉禾县| 资源县| 绥宁县| 丰顺县| 汉阴县| 皮山县| 扶余县| 方山县| 杨浦区| 五大连池市| 江安县| 孝感市| 应城市| 邵东县| 治多县| 怀来县| 册亨县| 信宜市| 弥勒县|