LeeCode-数据结构-day6-字符串
创始人
2024-03-28 15:10:39
0

day6-字符串

1、字符串中的第一个唯一字符

  1. 描述

    给定一个字符串 s ,找到 它的第一个不重复的字符,并返回它的索引 。如果不存在,则返回 -1 。 示例 1:
    输入: s = "leetcode"
    输出: 0
    示例 2:
    输入: s = "loveleetcode"
    输出: 2
    示例 3:
    输入: s = "aabb"
    输出: -1
    
  2. 思路

    获取每个字母的个数,再遍历数组获取索引

  3. 代码

    #include 
    #include 
    using namespace std;
    #include class Solution {
    public:int firstUniqChar(string s) {map letter;for(int i = 0; i < s.size(); i++) {letter[s[i]]++;}for(int i = 0; i < s.size(); i++) {if(letter[s[i]] == 1)return i;}return -1;}
    };int main() {string str = "aabb";Solution sol;int tmp = sol.firstUniqChar(str);printf("%d \n",tmp);return 0;
    }
    

2、赎金信

  1. 描述

    给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。
    如果可以,返回 true ;否则返回 false 。
    magazine 中的每个字符只能在 ransomNote 中使用一次。示例 1:
    输入:ransomNote = "a", magazine = "b"
    输出:false
    示例 2:
    输入:ransomNote = "aa", magazine = "ab"
    输出:false
    示例 3:
    输入:ransomNote = "aa", magazine = "aab"
    输出:true提示:
    1 <= ransomNote.length, magazine.length <= 105
    ransomNote 和 magazine 由小写英文字母组成
    
  2. 思路

    获取magazine字符的个数,读取ransomNote的字符每个-1。

  3. 代码

    #include 
    using namespace std;
    #include 
    #include class Solution {
    public:bool canConstruct(string ransomNote, string magazine) {map letter;if(magazine.size() < ransomNote.size()) return false;for(int i = 0; i < magazine.size(); i++) {letter[magazine[i]]++;}for(int i = 0; i < ransomNote.size(); i++) {if(letter[ransomNote[i]] == 0)return false;elseletter[ransomNote[i]]--;}return true;}
    };int main() {Solution sol;string magazine = "aab";string ransomNote = "aa";cout << sol.canConstruct(ransomNote,magazine);return 0;
    }
    

3、有效的字母异位词

  1. 描述

    给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
    注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。示例 1:
    输入: s = "anagram", t = "nagaram"
    输出: true
    示例 2:输入: s = "rat", t = "car"
    输出: false提示:
    1 <= s.length, t.length <= 5 * 104
    s 和 t 仅包含小写字母
    
  2. 思路

    将两个字符串的字符和个数分别放入两个map,并比较map是否相等

  3. 代码

    #include 
    using namespace std;
    #include 
    #include class Solution {
    public:bool isAnagram(string s, string t) {if(s.size() != t.size())    return false;    map a;map b;for(int i = 0; i < s.size(); i++) {a[s[i]]++;b[t[i]]++;}auto iter = a.begin();cout << (a == b) << endl;while(iter != a.end()) {printf("%d   %c   %d\n",iter -> second,iter -> first , b[iter->first]);if(iter -> second != b[iter -> first])  return false;iter++;}return (a == b);}
    };int main() {Solution sol;string s = "rat";string t = "car";cout << sol.isAnagram(s,t);return 0;
    }
    

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...