首页 > 其他分享 >周三

周三

时间:2023-05-24 11:12:40浏览次数:35  
标签:false ++ length 周三 重新排列 字符串 freq

题目描述:给定两个字符串s和t,求是否存在一种将t中的字符重新排列后得到s的排列。

设计思路:

  1. 首先需要判断两个字符串是否长度相等,如果不相等则无法重新排列成相等的字符串。
  2. 统计字符串s中每个字符的出现次数,存储在一个freq数组中。
  3. 遍历字符串t,对于每个字符c,将freq[c]的值减一,如果freq[c]已经为负数,则说明字符串t中出现了比字符串s中更多的该字符,不可能重新排列为字符串s,直接返回false。
  4. 最后遍历freq数组,如果有任何值不为0,则说明字符串t不可能重新排列为字符串s,直接返回false。

程序流程图:

开始
if s.length() != t.length():
    返回 false
定义freq数组,用于统计字符串s中每个字符的出现次数
for i in [0, s.length()-1]:
    freq[s[i]]++
for i in [0, t.length()-1]:
    freq[t[i]]--
    if freq[t[i]] < 0:
        返回 false
for i in [0, 255]:
    if freq[i] != 0:
        返回 false
返回 true
结束

代码实现:

#include <string>
#include <vector>
using namespace std;

bool canPermute(string s, string t) {
    if (s.length() != t.length()) {
        return false;
    }
    vector<int> freq(256, 0); // 初始化为0
    for (int i = 0; i < s.length(); i++) {
        freq[s[i]]++;
    }
    for (int i = 0; i < t.length(); i++) {
        freq[t[i]]--;
        if (freq[t[i]] < 0) {
            return false;
        }
    }
    for (int i = 0; i < 256; i++) {
        if (freq[i] != 0) {
            return false;
        }
    }
    return true;
}

标签:false,++,length,周三,重新排列,字符串,freq
From: https://www.cnblogs.com/zeyangshuaige/p/17427410.html

相关文章

  • 周三
    题目描述:给定一个字符串s,判断其是否为回文串。只考虑字母和数字字符,可以忽略字母的大小写。设计思路:首先需要去除字符串中的非字母数字字符,并将所有字母转换为小写(或大写)形式。然后从字符串两端开始比较,如果不相等,则返回false,否则继续比较。当左右指针相遇时,表示字符串是......
  • 5月17日周三
    计划删减代码,把它变成自己的,准备答辩学习前端知识angular框架,html语法扎实的学,css,JavaScript学习后端框架,Java语言学扎实点知道接口怎么回事,尝试或明白一个接口怎么写,接口调试是怎么实现的解决配置文件中resources中的几千个报错,不解决,无意义要搞明白数据库中的字段......
  • 周三
    题目描述:编写一个程序,输入n个整数,进行降序排序,并将排序结果输出。设计思路:本题需要输入n个整数并进行排序,通常使用排序算法来解决。在本程序中,可以通过冒泡排序来实现。冒泡排序算法的基本思想是:在要排序的一组数中,对相邻的两个数依次进行比较和调整,将较大的数向后移。经过第一......
  • 2023年5月10日周三
    计划删减代码,把它变成自己的,准备答辩学习前端知识angular框架,html语法扎实的学,css,JavaScript学习后端框架,Java语言学扎实点知道接口怎么回事,尝试或明白一个接口怎么写,接口调试是怎么实现的解决配置文件中resources中的几千个报错,不解决,无意义要搞明白数据库中的字段......
  • 周三打卡
    题目描述:设计一个能够模拟餐厅点餐流程的程序,需要实现以下功能:显示菜单:输出餐厅提供的所有菜品及其价格。点餐:输入菜品名称和数量,将菜品添加到订单中。修改订单:输入菜品名称和数量,修改订单中已有的菜品的数量。删除订单:输入菜品名称,将菜品从订单中删除。订单总价:计算订单中......
  • 2023年4月26日周三
    计划完成毕设的修改学习angular框架知道接口怎么回事,尝试或明白一个接口怎么写执行09点43分  看完翻译,开始修改论文15点00分  增加了两个数据库表详情,完成了小芳的要求15点00分  看文档约束再改排版16点01分  改完17点04分  看看angular框架记录问题想......
  • 2023年4月19日周三
    计划找杨哥问邮件发送的问题研究如何实现权限控制新增修改接口的,这属于下周的审核权限了继续读懂代码,补充相关知识收集免费接口执行09点12分  继续看完英语那个10点02分  花钱买了还是,每天早上端电脑学吧,开始搞毕设11点32分  看了半天学校,16点42分  解决mo......
  • 2023年4月12日周三
    计划形势与政策提交准备任务书,前期报告,中期报告,ppt执行09点12分  开始15点44分  答辩完了,真操蛋。记录已解决想法问题可以在邀请和邀请链接那里加一个字段,使其只在项目创建者时可用或显示。。我想简单了,人家实现的更牛逼,直接没有成员管理这个页面,也没有邀请链接......
  • 每周三题
    Buuctf-re-easyre下载文件解压后打开无信息,拖到IDA,F5看C语言代码  flag就在明文上。Buuctf-re-reserve1文件解压无法直接打开,拖进exeinfope查看  没有壳,为64......
  • 【计蒜课 每周三题】2023-02-25 第一题
    第一题题目描述给定一个长度为\(n\)的\(01\)序列\(a\),你可以对其进行若干次操作。对于一次操作,选择\(1\leql\leqr\leqn\),将\(a_l,…,a_r\)中的\(01\)翻转......