【LeetCode】917. 仅仅反转字母、387. 字符串中的第一个唯一字符

简介: 目录 917. 仅仅反转字母 387. 字符串中的第一个唯一字符

作者:小卢

专栏:《Leetcode》

喜欢的话:世间因为少年的挺身而出,而更加瑰丽。                                  ——《人民日报》


目录

917. 仅仅反转字母

387. 字符串中的第一个唯一字符


917. 仅仅反转字母

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. 字符串中的第一个唯一字符

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;
    }
};
相关文章
|
3天前
|
存储 算法
LeetCode第49题字母异位词分组
LeetCode第49题"字母异位词分组"的解题方法,通过将每个字符串的字符排序后作为键存储在HashMap中,有效地将所有字母异位词分组。
LeetCode第49题字母异位词分组
|
3天前
|
存储 算法
LeetCode第43题字符串相乘
LeetCode第43题"字符串相乘"的解题方法,通过使用数组存储乘积并处理进位,避免了字符串转换数字的复杂性,提高了算法效率。
LeetCode第43题字符串相乘
|
3天前
|
算法 Java
LeetCode第28题找出字符串中第一个匹配项的下标
这篇文章介绍了LeetCode第28题"找出字符串中第一个匹配项的下标"的两种解法:暴力解法和KMP算法,并解释了KMP算法通过构建前缀表来提高字符串搜索的效率。
LeetCode第28题找出字符串中第一个匹配项的下标
|
3天前
|
算法
LeetCode第17题电话号码的字母组合
该文章介绍了 LeetCode 第 17 题电话号码的字母组合的解法,通过分析得出可使用递归和回溯的思想解决,避免循环穷举的高循环次数,并给出了具体的编码实现,同时总结了该题较难理解,需要了解递归的本质,当嵌套循环层次多时可考虑递归。
LeetCode第17题电话号码的字母组合
|
3天前
|
算法
LeetCode第8题字符串转换整数 (atoi)
该文章介绍了 LeetCode 第 8 题字符串转换整数 (atoi)的解法,需要对字符串进行格式解析与校验,去除前导空格和处理正负号,通过从高位到低位的计算方式将字符串转换为整数,并处理越界情况。同时总结了这几道题都需要对数字的表示有理解。
LeetCode第8题字符串转换整数 (atoi)
|
3天前
|
算法
LeetCode第3题无重复字符的最长子串
该文章介绍了 LeetCode 第 3 题无重复字符的最长子串的解法,通过使用 HashSet 记录不重复的子元素,以每个字符开头遍历字符串,遇到重复字符则重新计算,最终找到最长子串,同时提到可以考虑使用 HashMap 降低复杂度。
LeetCode第3题无重复字符的最长子串
|
2月前
|
算法
力扣每日一题 6/23 字符串/模拟
力扣每日一题 6/23 字符串/模拟
20 1
|
1月前
|
索引
821.字符的最短距离-力扣(LeetCode)
821.字符的最短距离-力扣(LeetCode)
15 0
|
2月前
|
索引
力扣每日一题 6/27 字符串 贪心
力扣每日一题 6/27 字符串 贪心
14 0
|
2月前
|
Python
力扣随机一题 模拟+字符串
力扣随机一题 模拟+字符串
16 0