【强训笔记】day12

NO.1

思路:哈希表,建立bool数组,将要删除的字符串存入哈希表,并标为true,再遍历要做处理的字符串,如果在哈希表中为false,就输出。

代码实现:

cpp 复制代码
#include <iostream>
#include<string>

using namespace std;

int main()
{
    string s,t;
    getline(cin,s);
    getline(cin,t);
    bool hash[300]={0};
    for(auto ch:t) hash[ch]=true;
    for(auto ch:s)
    {
        if(!hash[ch])
        {
            cout<<ch;
        }
    }
    return 0;
}

NO.2

思路:根据链表1和2的路径相同来解决,链表一走完就走链表2,链表2走完就走链表1,当它们相同的时候停下来就是公共的第一个节点,如果为空就返回空节点。

代码实现:

cpp 复制代码
/*
struct ListNode {
	int val;
	struct ListNode *next;
	ListNode(int x) :
			val(x), next(NULL) {
	}
};*/
class Solution {
public:
    ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2) {
        ListNode* cur1=pHead1;
		ListNode* cur2=pHead2;
		while(cur1!=cur2)
		{
			cur1=cur1!=NULL?cur1->next:pHead2;
			cur2=cur2!=NULL?cur2->next:pHead1;
		}
		return cur1;

    }
};

NO.3


思路:利用dp的方法,找s的个数,如果最后一个字符为s,就等于之前的s再加1,不是就为之前s的数量,最后一个为h,那么sh的数量就等于前面s的数量加上前面sh的数量,不是就是前面sh的数量,如果最后一个为y,那么shy的数量就等于前面sh的数量加上前面shy的数量,不是就等于前面shy的数量。最后输出shy的数量就行,最后考虑到空间优化,用字符代替dp数组。

代码实现:

cpp 复制代码
#include <iostream>
 #include<string>
 using namespace std;
 
int main() {
    string str;
    int n;
    cin>>n>>str;
    long long s=0,h=0,y=0;
    for(int i=0;i<str.size();i++)
    {
        char ch=str[i];
        if(ch=='s') s++;
        else if(ch=='h') h+=s;
        else if(ch=='y') y+=h;
    }
    cout<<y<<endl;
    return 0;
}
相关推荐
崎岖Qiu5 小时前
【计算机网络 | 第十二篇】「网络层」概述与服务模型
网络·笔记·计算机网络
远离UE45 小时前
houdini hda 如何让模拟与虚幻物体进行碰撞
笔记·学习·houdini
追随者永远是胜利者5 小时前
(LeetCode-Hot100)53. 最大子数组和
java·算法·leetcode·职场和发展·go
生成论实验室5 小时前
即事经:一种基于生成论的宇宙、生命与文明新范式
人工智能·科技·神经网络·算法·信息与通信
王老师青少年编程5 小时前
csp信奥赛c++高频考点假期集训(分模块进阶)
数据结构·c++·算法·csp·高频考点·信奥赛·集训
癫狂的兔子7 小时前
【Python】【机器学习】K-MEANS算法
算法·机器学习·kmeans
崎岖Qiu7 小时前
【计算机网络 | 第十三篇】网络层服务的两种实现方式:无连接和面向连接
网络·笔记·计算机网络
山岚的运维笔记7 小时前
SQL Server笔记 -- 第65章:迁移 第66章:表值参数
数据库·笔记·sql·microsoft·sqlserver
Bear on Toilet7 小时前
递归_二叉树_50 . 从前序与中序遍历序列构造二叉树
数据结构·算法·leetcode·深度优先·递归
plus4s7 小时前
2月18日(82-84题)
c++·算法·动态规划