作者:小卢
专栏:《Leetcode》
喜欢的话:世间因为少年的挺身而出,而更加瑰丽。 ——《人民日报》
目录
917. 仅仅反转字母
题目描述:
给你一个字符串 s
,根据下述规则反转字符串:
- 所有非英文字母保留在原有位置。
- 所有英文字母(小写或大写)位置反转。
返回反转后的 s
。
示例:
思路:
利用两个指针来遍历字符串,一个指向头一个指向尾,两个指针找到是字母的位置,然后交换,直到begin==end。
代码:
class Solution { public: bool ischar(char ch) { if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')) return true; return false; } string reverseOnlyLetters(string s) { int begin=0; int end=s.size()-1; while(begin<end) { while(begin<end&&!ischar(s[begin])) begin++; while(begin<end&&!ischar(s[end])) end--; swap(s[begin],s[end]); begin++; end--; } return s; } };
387. 字符串中的第一个唯一字符
题目描述:
给定一个字符串 s
,找到 它的第一个不重复的字符,并返回它的索引 。如果不存在,则返回 -1
。
示例:
思路:
利用一个计数数组Count[],变量字符串,在字母-‘a’的对应位置计数,最后在遍历一次字符串,找到第一个等于1的位置。
代码:
class Solution { public: int firstUniqChar(string s) { int Count[30]={0}; for(int i=0;i<s.size();i++) Count[s[i]-'a']++; for(int i=0;i<s.size();i++) if(Count[s[i]-'a']==1)return i; return -1; } };