給定一個字符串S我們如何檢查天氣,我們可以通過改變單個字母來將其轉換爲迴文。請幫助快速解決方案來做到這一點。檢查迴文是否可以形成
示例:讓我們有S =「mixem」。那麼答案是肯定的,因爲我們可以將「e」改爲「i」,使其成爲迴文。
長度的字符串最多可以爲1000。
給定一個字符串S我們如何檢查天氣,我們可以通過改變單個字母來將其轉換爲迴文。請幫助快速解決方案來做到這一點。檢查迴文是否可以形成
示例:讓我們有S =「mixem」。那麼答案是肯定的,因爲我們可以將「e」改爲「i」,使其成爲迴文。
長度的字符串最多可以爲1000。
假設基於0的索引,就足夠了檢查,針對每個0 <= i < your_string_length
,如果位置的數目爲其中在位置i
和your_string_length - i - 1
字符是不同的是至多2。如果是,則回答也是肯定的,否則不是。
基本上,這將檢查有多少對距字符串邊距相等的字符對是不同的:如果只有一對這樣的字符對不同,那麼我們可以改變它的一個字符並使其相等。如果更多對,那麼我們需要改變更多的字符。
如果我正確理解您的示例,這意味着您可以將單個字母更改爲任何其他字母。這使得算法變得令人尷尬地簡單。你需要從側面解析這個詞到中心,並計算錯誤的數量。如果它是< = 1,那麼你可以轉換成1個迴文迴文,或者它已經是迴文。
var s = "mixen", errors = 0;
for(var i = 0; i < s.length/2; i++){
if(s[i] != s[s.length-1-i]){
errors++;
}
var isPalindrom = errors == 0;
var isPalindromConvertible = errors <= 1;
PS。你沒有指定語言,所以我現在寫的最方便:javascript
你試過的代碼在哪裏?你有沒有試圖實現它。你不是嗎? – nanndoj 2015-03-02 14:00:16
@nanndoj是的,我有。但我想要一個可以在半秒內執行的代碼。我試圖改變每個字母在相反的一面..但它是非常不足 – user3840069 2015-03-02 14:02:55
我不是你的downvoter。但這是一種「爲我而做」的問題,這是一個很有希望落後的候選人。我認爲最好的辦法是提供你的代碼,並在你想要改進的某個特定點上尋求幫助! – nanndoj 2015-03-02 14:06:40