LeetCode 917. 僅僅反轉字母(C、C++、python)
阿新 • • 發佈:2018-12-14
給定一個字串 S
,返回 “反轉後的” 字串,其中不是字母的字元都保留在原地,而所有字母的位置發生反轉。
示例 1:
輸入:"ab-cd" 輸出:"dc-ba"
示例 2:
輸入:"a-bC-dEf-ghIj" 輸出:"j-Ih-gfE-dCba"
示例 3:
輸入:"Test1ng-Leet=code-Q!" 輸出:"Qedo1ct-eeLg=ntse-T!"
提示:
S.length <= 100
33 <= S[i].ASCIIcode <= 122
S
中不包含 \
or "
C
char* reverseOnlyLetters(char* S) { int n=strlen(S); int* temp=(int*)malloc(sizeof(int)*n); int m=0; char k; for(int i=0;i<n;i++) { if((S[i]>='a' && S[i]<='z') || (S[i]>='A' && S[i]<='Z')) { temp[m++]=i; } } for(int i=0;i<m/2;i++) { k=S[temp[i]]; S[temp[i]]=S[temp[m-1-i]]; S[temp[m-1-i]]=k; } return S; }
C++
class Solution { public: string reverseOnlyLetters(string S) { vector<int> temp; int n=S.length(); for(int i=0;i<n;i++) { if((S[i]>='a' && S[i]<='z') || (S[i]>='A' && S[i]<='Z')) { temp.push_back(i); } } int m=temp.size(); char k; for(int i=0;i<m/2;i++) { k=S[temp[i]]; S[temp[i]]=S[temp[m-1-i]]; S[temp[m-1-i]]=k; } return S; } };
python
class Solution: def reverseOnlyLetters(self, S): """ :type S: str :rtype: str """ n=len(S) temp=[] SS=list(S) for i in range(0,n): if S[i]>='a' and S[i]<='z' or S[i]>='A' and S[i]<='Z': temp.append(i) m=len(temp) for i in range(0,m//2): k=S[temp[i]] SS[temp[i]]=S[temp[m-1-i]] SS[temp[m-1-i]]=k return ''.join(SS)