LeetCode 647. 迴文子串(C、python)
阿新 • • 發佈:2018-11-21
給定一個字串,你的任務是計算這個字串中有多少個迴文子串。
具有不同開始位置或結束位置的子串,即使是由相同的字元組成,也會被計為是不同的子串。
示例 1:
輸入: "abc" 輸出: 3 解釋: 三個迴文子串: "a", "b", "c".
示例 2:
輸入: "aaa" 輸出: 6 說明: 6個迴文子串: "a", "a", "a", "aa", "aa", "aaa".
注意:
輸入的字串長度不會超過1000。
C
int countSubstrings(char* s) { int n=strlen(s); int count=0; for(int i=0;i<n-1;i++) { int left=i-1; int right=i+1; while(left>=0 && right<n) { if(s[left]==s[right]) { count++; left--; right++; } else { break; } } left=i; right=i+1; while(left>=0 && right<n) { if(s[left]==s[right]) { count++; left--; right++; } else { break; } } } return count+n; }
python
class Solution: def countSubstrings(self, s): """ :type s: str :rtype: int """ n=len(s) count=0 for i in range(0,n-1): left=i-1 right=i+1 while left>=0 and right<n: if s[left]==s[right]: count+=1 left-=1 right+=1 else: break left=i right=i+1 while left>=0 and right<n: if s[left]==s[right]: count+=1 left-=1 right+=1 else: break return count+n