【强训笔记】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;
}
相关推荐
2301_822703208 分钟前
Flutter 框架跨平台鸿蒙开发 - 创意声音合成器应用
算法·flutter·华为·harmonyos·鸿蒙
cmpxr_23 分钟前
【C】数组名、函数名的特殊
c语言·算法
KAU的云实验台34 分钟前
【算法精解】AIR期刊算法IAGWO:引入速度概念与逆多元二次权重,可应对高维/工程问题(附Matlab源码)
开发语言·算法·matlab
会编程的土豆41 分钟前
【数据结构与算法】再次全面了解LCS底层
开发语言·数据结构·c++·算法
咖啡忍者1 小时前
【SAP CO】4.COPC产品成本控制-3.WIP后台配置
笔记
大熊背2 小时前
如何利用Lv值实现三级降帧
算法·自动曝光·lv·isppipeline
大尚来也2 小时前
驾驭并发:.NET多线程编程的挑战与破局之道
java·前端·算法
向阳而生,一路生花2 小时前
深入浅出 JDK7 HashMap 源码分析
算法·哈希算法
君义_noip2 小时前
信息学奥赛一本通 4150:【GESP2509七级】⾦币收集 | 洛谷 P14078 [GESP202509 七级] 金币收集
c++·算法·gesp·信息学奥赛·csp-s
摸个小yu2 小时前
【力扣LeetCode热题h100】链表、二叉树
算法·leetcode·链表