成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

萬(wàn)人千題計(jì)劃-26

luzhuqun / 933人閱讀

摘要:為了不讓字符串越界,特別在循環(huán)里面再次添加了條件函數(shù)判斷一個(gè)字符是否是字母或者十進(jìn)制數(shù)字,若為字母和數(shù)字則返回真,否則返回否函數(shù)把字符轉(zhuǎn)換成小寫(xiě)字母,非字母字符不做出處理。我一時(shí)半會(huì)是搞不定了,但如果是哈希的話,還是可以接受這種思路

今日題目共八道

向大家推薦一下我們的社區(qū):萬(wàn)人千題
同時(shí)向大家推薦一下我們社區(qū)幾位大佬的主頁(yè)
英雄哥
磊哥
解題者大佬

第一題:回文排列.

思路:只有當(dāng)字符個(gè)數(shù)奇數(shù)個(gè)的情況最多有一個(gè)時(shí),才會(huì)形成回文字符串

class Solution {public:    bool canPermutePalindrome(string s) {        int res = 0;        unordered_map<char, int> map;        for(auto &c : s) {            map[c]++;        }        for(auto &c : map) {            if(c.second&1) res++;        }        return res <= 1;    }};

第二題:有效的回文.

思路:在左指針比右指針小的前提下,比較左右指針?biāo)傅闹凳欠裣嗟?,同時(shí)在比較的時(shí)候使用isalnum()和tolower()函數(shù)。為了不讓字符串越界,特別在循環(huán)里面再次添加了left

isalnum()函數(shù):判斷一個(gè)字符是否是字母或者十進(jìn)制數(shù)字,若為字母和數(shù)字則返回真,否則返回否

tolower()函數(shù):把字符轉(zhuǎn)換成小寫(xiě)字母,非字母字符不做出處理。

方法一:雙指針

class Solution {public:    bool isPalindrome(string s) {        //雙指針        int left = 0, right = s.size()-1;        while(left < right) {            while(left < right && !isalnum(s[left])) {                ++left;            }            while(left < right && !isalnum(s[right])) {                --right;            }            if(tolower(s[left]) != tolower(s[right])) {                return false;            }            ++left;            --right;        }        return true;    }};

方法二:使用庫(kù)函數(shù)
思路:新建一個(gè)字符串與字符串一相等,使用reverse函數(shù)反轉(zhuǎn)字符,與之比較

class Solution {public:    bool isPalindrome(string s) {        string str1;        for(char &i : s) {            if(isalnum(i)) {                str1 += tolower(i);            }        }        string str2=str1;        reverse(str1.begin(), str1.end());        return str1 == str2;    }};

第三題:驗(yàn)證回文串.與第二題相同,我就不贅述了

第四題:最長(zhǎng)回文串.

思路:使用上詞學(xué)到的哈希映射來(lái)解決問(wèn)題,然后利用
if判斷條件(map[c - ‘A’] & 1) 是否為 0
來(lái)判斷該字母?jìng)€(gè)數(shù)達(dá)到偶數(shù),若為偶數(shù),則res+2

class Solution {public:    int longestPalindrome(string s) {        int res = 0;        unordered_map<char, int>map;        for(char &c : s) {            map[c - "A"]++;            if((map[c - "A"] & 1) == 0) {                res += 2;            }        }        return res == s.size() ? res : res+1;    }};

第五題:最多刪除一個(gè)字符得到回文.

思路:左右雙指針,比較左右指針?biāo)傅闹担钡阶笥抑羔樈徊嬷睾?/p>

class Solution {public:    bool validPalindrome(string s) {        int left = 0, right = s.size()-1;        while(left<right && s[left] == s[right]) {            ++left;            --right;        }        return Palindrom(s, left+1, right) || Palindrom(s, left, right-1);    }    bool Palindrom(const string& s, int left, int right) {        while(left < right && s[left] == s[right]) {            ++left;            --right;        }        return left >= right;    }};

第六題:驗(yàn)證回文字符串Ⅱ.

與第五題相同

第七題:刪除回文子序列.

思路:主要是題目有點(diǎn)繞,刪除的是回文子序列,不是子字符串
所以一共有三種情況:
空字符返回0,回文返回1,否則一次全部刪a,一次全部刪b,返回2

class Solution {public:    int removePalindromeSub(string s) {        if(s.size() == 0) return 0;        for(int left=0, right=s.size()-1; left<right; left++, right--) {            if(s[left] != s[right]) {                return 2;            }        }        return 1;    }};

第八題:最短回文串.

思路:就是將字符串正序和逆序轉(zhuǎn)換為base進(jìn)制的數(shù),然后比較兩個(gè)數(shù)取模后是否相等,如果相等,表示兩個(gè)字符串相等。
KMP我一時(shí)半會(huì)是搞不定了,但如果是哈希的話,還是可以接受這種思路

class Solution {public:    string shortestPalindrome(string s) {        int n = s.size();        int base = 131, mod = 1000000007;        int left = 0, right = 0, mul = 1;        int best = -1;        for (int i = 0; i < n; ++i) {            left = ((long long)left * base + s[i]) % mod;            right = (right + (long long)mul * s[i]) % mod;            if (left == right) {                best = i;            }            mul = (long long)mul * base % mod;        }        string add = (best == n - 1 ? "" : s.substr(best + 1, n));        reverse(add.begin(), add.end());        return add + s;    }};

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/123494.html

相關(guān)文章

  • 萬(wàn)人千計(jì)劃-32

    摘要:假設(shè)模式起始位置為,判斷后續(xù)序列是否滿足條件,其實(shí)只需要判斷與是否相同。如果數(shù)組中不存在至少重復(fù)次且長(zhǎng)度為的模式,返回注意這里需要加一,否則會(huì)錯(cuò) 萬(wàn)人千題計(jì)劃 今...

    galois 評(píng)論0 收藏0
  • 萬(wàn)人千】大學(xué)生算法社區(qū)火爆開(kāi)啟,每日打卡學(xué)習(xí),誠(chéng)邀妳的加入

    摘要:三結(jié)對(duì)編程排位賽四個(gè)人為一組,由隊(duì)長(zhǎng)帶隊(duì)刷題,每周根據(jù)這周四個(gè)人的刷題總數(shù)進(jìn)行隊(duì)伍間排名。萬(wàn)人千題結(jié)對(duì)編程排位賽如果想?yún)⒓拥牡诙诘耐瑢W(xué),可以先聯(lián)系作者加群,看看第一期的同袍是如何奮斗的。 ...

    morgan 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<