串的相關題目

于是他錯誤的點名開始了

我發現有關hash得題目有些是可以通過map數組來完成的:何為map數組,我們先思考一下最簡單的桶的排序,桶排序是將我們需要數字最為下標輸進數組中,而數組是存放的數字是這個數字出現的次數,但是由于如果數據過大且數字并不稠密,則會導致浪費很多空間。而map數組也是桶排序一樣的思想,我們首先來看map數組是怎樣定義的?

map<string ,int>a;

string是字符串的意思,這個是將字符串作為下標,后面的int就是map數組所存的數字,一般運用于這個字符串出現了幾次。看看這個思路是不是和桶排序差不多。這個map在#include<map>這個頭文件中

好既然我們知道了如何使用map,那我們就壓迫思考如何使用map數組來解決這一道題目
思路如下:我們將每一個字符串作為map數組的下標,如果是第一次出現那么map的int類型就要為1。接下來進行第2次輸入字符串,如果發現這個字符串作為下標的int值為1,那么就輸出OK ,而且將這個下標記為2,如果下一次這個字符串作為下標再一次出現,且int值為2,就說明已經重復了,那么我們就輸出REPEAT.如果int是其他值就說明根本沒有出現過,那么就直接輸出WRONG

代碼如下?

#include<map>
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
map<string ,int>a;
string s1,s2;
int n,m;
int main()
{cin>>n;while(n--){cin>>s1;a[s1]=1;}cin>>m;while(m--){cin>>s1;if(a[s1]==1){printf("OK\n");a[s1]=2;}else if(a[s1]==2){printf("REPEAT\n");}else{printf("WRONG\n");}}return 0;
}

A-B 數對

首先我們需要轉換思路,題目讓我求A-B=C, 我們可不可以轉換為A-C=B?完全可以
為什么我們需要做這樣的轉化?? 應為在之前A-B=C這樣我們需要從一堆數據中尋找到兩個符合要求的數字,而且答案是只有一個C。但是如果我們換了一個思路,B從哪里來?是不是從數組中來?答案就是在數組里面,那你就有可能會問了,那從數組里面找答案不是更加難嗎?no no no。我們是不是可以用map數組,如果這個出現了一次就記錄加加,我們再將數組全部都減去C這個是不是就是B,那么我們將B作為map數組下標輸進去,有幾次記錄就有幾個答案。是不是很妙?我第一次看到這樣的寫法我都震驚了。

代碼如下

#include<iostream>
#include<cstring>
#include<map>
#include<string.h>
using namespace std;
typedef long long ll;
const int N=2e5+100;
map<ll,ll> a;
ll ans[N];
ll n,c;
int main()
{cin>>n>>c;for(int i=1;i<=n;i++){cin>>ans[i];a[ans[i]]++;//這個就是A-C=B中B的個數,其實就是在答案中找ans[i]-=c;//這個就是B,如果遍歷一遍整個數組,發現在map數組中有,那么map數組中有幾個,那么就出現了幾次}ll anss=0;for(int i=1;i<=n;i++){anss+=a[ans[i]];}cout<<anss<<endl;return 0;
}

【模板】字符串哈希

仔細看這題 說是不是就是找有幾個不同的字符串?那我們換個思路是不是就是看有幾個字符串是相同的,拿著不就是和第一題差不多嘛,用一個map數組,第一個類型為string 作為下標,第二個類型為int 作為map數組具體的值,如果這個字符串出現了int 類型就進行幾次加加。最后一次遍歷,將int 的值為0進行累加

代碼如下

#include<map>
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
map<string ,int>a;
string s1,s2;
int n,m;
int main()
{cin>>n;int ans=0;for(int i=1;i<=n;i++){cin>>s1;if(a[s1]==0){a[s1]=1;ans++;}}cout<<ans<<endl;return 0;
}

?[USACO09OCT] Barn Echoes G

首先我看到題目并不是先想到hash的方法,我也不知道這一題用hash怎么做,反而我先想到的是用kmp算法來寫?,他題目自己說了要使用前后綴相同來寫,這很自然的就想到了。這個題目有個坑點就是它沒說那個是主串,那個是模式串,這兩個字符串都分別作為主串和模式串來一遍kmp。

還有一個坑點就是兩個模式串第一個可以是前綴,下一個是后綴。然后還可以是第二個是前綴,第一個是后綴,所以也是要使用兩遍kmp算法來保證都能充當一次前綴后綴,模式串,主串。

然后用一個變量anss來記錄最大的長度就可以過來了(嘿嘿 我的獨創思路,還有點小自豪

#include<iostream>
#include<cstring>
#include<string.h>
#include<algorithm>
#include<cstdio>
using namespace std;
char s1[100];
char s2[100];
int kmp[100];
int main()
{scanf("%s",s1+1);scanf("%s",s2+1);int len1=strlen(s1+1);int len2=strlen(s2+1);int j=0;for(int i=2;i<=len2;i++){while(j>0&&s2[i]!=s2[j+1])j=kmp[j];if(s2[i]==s2[j+1])j++;kmp[i]=j;}int ans=-1;j=0;for(int i=1;i<=len1;i++){while(j>0&&s1[i]!=s2[j+1])j=kmp[j];if(s1[i]==s2[j+1])j++;ans=max(ans,j);	}	j=0;for(int i=2;i<=len1;i++){while(j>0&&s2[i]!=s2[j+1])j=kmp[j];if(s1[i]==s1[j+1])j++;kmp[i]=j;}j=0;for(int i=1;i<=len2;i++){while(j>0&&s2[i]!=s1[j+1])j=kmp[j];if(s2[i]==s1[j+1])j++;ans=max(ans,j);	}	cout<<ans<<endl;return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/697476.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/697476.shtml
英文地址,請注明出處:http://en.pswp.cn/news/697476.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Matlab論文插圖繪制模板第137期—極坐標分組氣泡圖

在之前的文章中&#xff0c;分享了Matlab極坐標氣泡圖的繪制模板&#xff1a; 進一步&#xff0c;再來分享一下極坐標分組氣泡圖。 先來看一下成品效果&#xff1a; ? 特別提示&#xff1a;本期內容『數據代碼』已上傳資源群中&#xff0c;加群的朋友請自行下載。有需要的朋…

解決SSH遠程登錄開飯板出現密碼錯誤問題

輸入“adduser Zhanggong回車”&#xff0c;使用adduser命令創建開發板用戶名為Zhanggong 輸入密碼“123456” 輸入密碼“123456”

openGauss學習筆記-226 openGauss性能調優-系統調優-配置LLVM-LLVM適用場景與限制

文章目錄 openGauss學習筆記-226 openGauss性能調優-系統調優-配置LLVM-LLVM適用場景與限制226.1 適用場景226.2 非適用場景 openGauss學習筆記-226 openGauss性能調優-系統調優-配置LLVM-LLVM適用場景與限制 226.1 適用場景 支持LLVM的表達式 查詢語句中存在以下的表達式支持…

PostgreSQL數據庫備份和恢復

一、數據庫備份 /usr/lib/postgresql/16/bin/pg_dump -h localhost -p 5432 -U odoo -F c -b -v -f backup.sql laonian 二、數據庫恢復 1 現在目標pgsql數據庫中創建空數據庫老年 create database laonian owner odoo; 2 執行恢復命令&#xff08;windows系統下&#xff…

網絡安全-nc(Netcat)工具詳解

經常在反彈shell的時候使用nc命令&#xff0c;但是從來沒有了解過&#xff0c;今天翻書看到了&#xff0c;準備記錄一下。 nc全稱Netcat&#xff0c;是TCP/IP連接的瑞士軍刀。哈哈我最喜歡瑞士軍刀了。 有一個比較偏的知識點&#xff0c;nc還可以探測目標的端口是否開放&…

Modern C++ std::variant的5個特性+原理

1 前言 上一節《Modern C std::variant的實現原理》我們簡單分析了std::variant的實現原理&#xff0c;其實要學好C編程&#xff0c;除了看優秀的代碼包括標準庫實現&#xff0c;讀文檔也是很便捷且必須的一種辦法。 本節我將逐條解析文檔中的五個特性&#xff0c;解析的辦法有…

LINUX操作系統:重定向

輸出重定向&#xff1a;將命令行程序的輸出重定向到其他位置&#xff0c;如文件、程序、打印機等。 輸入重定向&#xff1a;從其他位置獲取輸入&#xff0c;而不是從標準輸入&#xff08;鍵盤、鼠標等&#xff09; 錯誤重定向&#xff1a;同輸出。 輸出重定向&#xff08;Outp…

R語言【sp】——over(),%over%

Package sp version 1.5-0 Description 點、網格和多邊形的一致空間覆蓋:在對象x的空間位置從空間對象y檢索索引或屬性。 Usage over(x, y, returnList = FALSE, fn = NULL, ...) x %over% y Arguments 參數【x】:查詢的幾何(位置)。 參數【y】:層,從中查詢幾何或屬性。…

PYTHON-使用正則表達式進行模式匹配

目錄 Python 正則表達式Finding Patterns of Text Without Regular ExpressionsFinding Patterns of Text with Regular ExpressionsCreating Regex ObjectsMatching Regex ObjectsReview of Regular Expression MatchingMore Pattern Matching with Regular ExpressionsGroupi…

阿里開源低代碼引擎 - Low-Code Engine

阿里開源低代碼引擎 - Low-Code Engine 本文主要介紹如何在Windows運行/開發阿里開源低代碼引擎 - Low-Code Engine 詳細文檔參見【 阿里開源低代碼引擎 - Low-Code Engine 官方文檔】 目錄 阿里開源低代碼引擎 - Low-Code Engine一、環境準備1、使用 WSL 在 Windows 上安裝 L…

方法鑒權:基于 Spring Aop 的注解鑒權

在Spring框架中&#xff0c;可以使用面向切面編程&#xff08;AOP&#xff09;來實現注解鑒權。這通常涉及到定義一個切面&#xff08;Aspect&#xff09;&#xff0c;該切面會在方法執行前進行攔截&#xff0c;并根據注解value值來決定是否允許執行該方法。 簡單思路&#xf…

Java學習筆記2024/2/22

面向對象進階部分學習方法&#xff1a; 特點&#xff1a; 邏輯性沒有那么強&#xff0c;但是概念會比較多。 記憶部分重要的概念&#xff0c;理解課堂上講解的需要大家掌握的概念&#xff0c;多多練習代碼。 今日內容 復習回顧 static關鍵字 繼承 教學目標 能夠掌握st…

【開源】JAVA+Vue.js實現醫院門診預約掛號系統

目錄 一、摘要1.1 項目介紹1.2 項目錄屏 二、功能模塊2.1 功能性需求2.1.1 數據中心模塊2.1.2 科室醫生檔案模塊2.1.3 預約掛號模塊2.1.4 醫院時政模塊 2.2 可行性分析2.2.1 可靠性2.2.2 易用性2.2.3 維護性 三、數據庫設計3.1 用戶表3.2 科室檔案表3.3 醫生檔案表3.4 醫生放號…

qml 保存當前界面并在其圖片中添加文字

使用場景&#xff1a;在保存二維碼的時候&#xff0c; 在二維碼圖片加標題或描述 保存后的圖片 demo&#xff1a;https://download.csdn.net/download/uVarAndMethod/88868455

Electron實戰之環境搭建

工欲善其事必先利其器&#xff0c;在進行實戰開發的時候&#xff0c;我們最終的步驟是搞好一個舒服的開發環境&#xff0c;目前支持 Vue 的 Electron 工程化工具主要有 electron-vue、Vue CLI Plugin Electron Builder、electron-vite。 接下來我們將分別介紹基于 Vue CLI Plu…

一、計算機的語言奇跡:探秘ChatGPT的智能回答和寫作能力—我耀學IT

目前我們這個行業&#xff0c;最火的話題無疑是AI人工智能&#xff0c;類似ChatGPT這樣的智能Ai,今天剩下的時間不多&#xff0c;每天一個主題&#xff0c;我給大家講一下計算機回答問題和寫作的能力&#xff0c;尤其是聊天型AI模型ChatGPT。讓大家可以更加前沿的了解一下關于它…

暴雨信息|警惕AI 的變革陣痛與不穩定性

過去的未來主義幽靈使我們對數字化變革的預測保持謹慎。 我們現在經常聽到&#xff0c;世界正處于一個技術轉折點&#xff1b;我們正在快速步入一個由 ChatGPT 等人工智能工具塑造的未來。然而&#xff0c;我懷疑&#xff0c;2024 年我們將會被提醒到納普斯特的幽靈——以及其他…

ChatGPT在數據分析崗位了解階段的應用

ChatGPT在數據分析崗位了解階段的應用 ? 1.1 數據分析師的職責與技能要求 ? 如果想成為數據分析師&#xff0c;首先要了解這個崗位的具體職責和技能要求。這個問題可以直接詢問ChatGPT&#xff1a; ? ChatGPT收到上述內容后&#xff0c;返回如下結果。 ? ChatGPT給出的信…

LeetCode56.合并區間

題目 以數組 intervals 表示若干個區間的集合&#xff0c;其中單個區間為 intervals[i] [starti, endi] 。請你合并所有重疊的區間&#xff0c;并返回 一個不重疊的區間數組&#xff0c;該數組需恰好覆蓋輸入中的所有區間 。 示例 輸入&#xff1a;intervals [[1,3],[2,6]…

【論文精讀】Segment Anything

Segment Anything 前言Abstract1. Introduction2. Segment Anything Task3. Segment Anything Model4. Segment Anything Data Engine5. Segment Anything Dataset6. Segment Anything RAI Analysis7. Zero-Shot Transfer Experiments7.1. Zero-Shot Single Point Valid Mask E…