新聞中心
- 一、題目
- 1、題目描述
- 2、基礎(chǔ)框架
- 3、原題鏈接
- 二、解題報(bào)告
- 1、思路分析
- 2、時(shí)間復(fù)雜度
- 3、代碼詳解
- 三、本題小知識(shí)
如果在將所有大寫字符轉(zhuǎn)換為小寫字符、并移除所有非字母數(shù)字字符之后,短語(yǔ)正著讀和反著讀都一樣。則可以認(rèn)為該短語(yǔ)是一個(gè) 回文串 。
字母和數(shù)字都屬于字母數(shù)字字符。
給你一個(gè)字符串 s,如果它是 回文串 ,返回 true ;否則,返回 false 。
示例 1:
輸入: s = “A man, a plan, a canal: Panama”
輸出:true
解釋:“amanaplanacanalpanama” 是回文串。
示例 2:
輸入:s = “race a car”
輸出:false
解釋:“raceacar” 不是回文串。
2、基礎(chǔ)框架 3、原題鏈接 二、解題報(bào)告 1、思路分析示例 3:
輸入:s = " "
輸出:true
解釋:在移除非字母數(shù)字字符之后,s 是一個(gè)空字符串 “” 。
由于空字符串正著反著讀都一樣,所以是回文串。
??
(
1
)
(1)
(1)判斷回文串,首先想到雙指針?lè)謩e從首尾開(kāi)始,一個(gè)往后,一個(gè)往前同時(shí)遍歷,判斷字符是否相同。
??
(
2
)
(2)
(2)題目中的字符串中還包含了除數(shù)字字母之外的符號(hào),要求無(wú)視這些符號(hào),我們可以在指針遍歷到這些符號(hào)時(shí)直接跳過(guò)。
??
(
3
)
(3)
(3)同時(shí)題目不考慮大小寫,所以除了判斷字母是否相等外,如果不相等還要判斷是否是對(duì)應(yīng)的大小寫字母。
最壞時(shí)間復(fù)雜度為O(n),空間復(fù)雜度為O(1)
3、代碼詳解C++
class Solution {public:
bool isPalindrome(string s) {int l = 0;
int r = s.length()-1;
while(lwhile(isTrue(s[l]) == 0 && l< r) {l++;
}
while(isTrue(s[r]) == 0 && l< r) {r--;
}
if (isTrue(s[l]) != isTrue(s[r])) return false;
l++;
r--;
}
return true;
}
int isTrue (char c) {if (c >= '0' && c<= '9'){return 1 + (c-'0');
}
if (c >= 'a' && c<= 'z'){return 11 + (c - 'a');
}
if (c >= 'A' && c<= 'Z'){return 11 + (c - 'A');
}
return 0;
}
};
三、本題小知識(shí)1.對(duì)撞指針的應(yīng)用
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
名稱欄目:(雙指針之對(duì)撞指針)leetcode125.驗(yàn)證回文串-創(chuàng)新互聯(lián)
文章位置:http://www.dlmjj.cn/article/edgjp.html