驗證回文串

2021-10-19 10:44:05 字數 1803 閱讀 7691

示例 1:

輸入:"a man, a plan, a canal: panama"輸出:true
示例 2:

輸入:"race a car"輸出:false
2.1  思路分析

遍歷字串,將字串中的數字,大小寫字母一律轉換成大寫字母,儲存到乙個新的字串中;

對這個新的字串反轉,比較這兩個字串是否相同即可;

在**實現2中,我們通過使用相關api對**實現1進行簡化;

2.2  **實現1

class solution  else if(s.charat(i) >= 'a' && s.charat(i) <= 'z')  else if(s.charat(i) >= 'a' && s.charat(i) <= 'z') 

}string s1 = sb.tostring();

string s2 = new stringbuilder(s1).reverse().tostring();

return s1.equals(s2);

}}

2.3  **實現2

class solution 

}string s1 = new stringbuilder(sb).reverse().tostring();

string s2 = sb.tostring();

return s1.equals(s2);

}}

2.4  複雜度分析

3.1  思路分析

如方法2中所說,若串非空,我們得到只含有字母及數字的字串後,要驗證該字串是否為回文串;

採用雙指標,分別指向字串的首尾,並向中間靠攏,當兩個指標相遇或者相越過時,即可判斷為回文串;

3.2  **實現

class solution 

}s = sb.tostring();

int begin = 0, end = s.length() - 1;

while(begin < end) else

}return true;

}}

3.3  複雜度分析

4.1  思路分析

在方法2的基礎上,我們可以原地操作,即將雙指標在原字串上遍歷,需要注意的是指標移動時,要略過非數字及非字母字元;

4.2  **實現

class solution 

while(begin < end && !character.isletterordigit(s.charat(end)))

if(character.touppercase(s.charat(begin)) !=

character.touppercase(s.charat(end)))

begin++;

end--;

}return true;

}}

4.3  複雜度分析

驗證回文串

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

驗證回文串

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

驗證回文串

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