算法題(117):字符串的展開

審題:

本題需要我們根據題目的要求將字符串進行擴展

思路:
方法一:模擬法

一般來說題目字數和要求很多的題就是模擬題,模擬題特別需要注意的就是細節,在編寫代碼之前一定要把細節想清楚,否則很容易出錯。

分析模擬過程:

首先,題目給了我們一個字符串,這個字符串中的某些部分是需要擴展的,有些部分是不用擴展的,在這里我們就分成這兩大類

需要擴展:

(1)特殊擴展:對于'-'兩邊的字符屬于順序遞增的情況,我們就直接越過'-'接入output

(2)普通擴展:

控制插入字符:通過if語句控制字母與數字字符的插入字符

控制插入數量:通過append方法控制p2個字符插入

控制插入順序:通過reverse方法控制p3為2時的順序

不需要擴展:直接接入output字符串

解題:

#include<iostream>
#include<algorithm>
using namespace std;
int p1, p2, p3;
string input;
string output;
bool issametype(char a, char b)
{return (islower(a) && islower(b)) || (isdigit(a) && isdigit(b));
}
int main()
{cin >> p1 >> p2 >> p3;cin >> input;//輸出字符串構建for (size_t i = 0; i < input.size(); i++){//擴展if (i > 0 && i < input.size() - 1 && input[i] == '-' && issametype(input[i-1],input[i+1]) && input[i+1] > input[i-1]){//特殊擴展if (input[i - 1] + 1 == input[i + 1]){continue;}string s;//確定待插入臨時串sfor (char c = input[i - 1] + 1; c < input[i + 1]; c++){char ch;//展開方式+重復個數if (p1 == 2){if (islower(c))//小寫字母單獨處理ch = toupper(c);else//數字處理ch = c;}else if (p1 == 3){ch = '*';}else{ch = c;}s.append(p2, ch);		}//插入順序if (p3 == 2){reverse(s.begin(),s.end());}//插入output += s;}else //不展開{output += input[i];}	}cout << output;
}

注意:

1.利用庫方法isdigit判斷是否為數字字符,islower判斷是否為小寫字母。

2.判斷越界不要使用i-1,因為i是size_t類型,-1后會變成很大的正數,導致邏輯錯亂。

3.對于輸出類型部分:p1為1和3對于數字的字母都是一樣的,而p1為2就需要分開處理

4.toupper將小寫字母轉大寫,append將多個重復字符插入字符串

P1098 [NOIP 2007 提高組] 字符串的展開 - 洛谷

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

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

相關文章

15使用按鈕實現helloworld(2)

目錄 通過純代碼的方式實現的 按版 hello world 通過圖形化界面的方式&#xff0c;實現的 按鈕版 hello world 通過純代碼的方式實現的 按版 hello world 對于純代碼版本,按鈕對象是咱們自己 new 的 為了保證其他函數中能夠訪問到這個變量,就需要把按鈕對象 設定為 Widget 類…

Nacos 服務發現的核心模型有哪些?Service, Instance, Cluster 之間的關系是什么?

Nacos 服務發現的核心模型 Nacos 服務發現的核心數據模型主要圍繞以下幾個關鍵概念構建&#xff0c;它們共同構成了服務注冊與發現的基礎&#xff1a; Namespace (命名空間): 用途: 用于進行環境隔離。比如&#xff0c;你可以為開發環境 (dev)、測試環境 (test) 和生產環境 (p…

VMware 安裝 Ubuntu 全流程實戰指南:從零搭建到深度優化

在軟件開發、系統測試以及技術學習等諸多場景中&#xff0c;使用虛擬機安裝操作系統是一種靈活且高效的方式。Ubuntu 作為一款優秀的開源操作系統&#xff0c;在 VMware 虛擬機上的安裝與優化備受關注。接下來&#xff0c;將為大家帶來 VMware 安裝 Ubuntu 的全流程實戰指南&am…

探秘叁仟智盒設備:智慧城市的智能樞紐

在智慧城市建設的宏偉藍圖中&#xff0c;各類先進技術與設備層出不窮&#xff0c;叁仟智盒設備作為其中的關鍵一環&#xff0c;正悄然發揮著巨大作用&#xff0c;為城市的智能化轉型注入強大動力。 一、叁仟智盒設備概述 叁仟智盒設備是杭州叁仟智慧城市科技有限公司旗下的重…

晶晨S905L3S/S905L3SB_安卓9.0_10秒開機_通刷-線刷固件包

晶晨S905L3S&#xff0f;S905L3SB_安卓9.0_10秒開機_通刷-線刷固件包 線刷方法&#xff1a;&#xff08;新手參考借鑒一下&#xff09; 使用晶晨刷機工具USB_Burning_Tool進行刷機&#xff1b;請使用Amlogic USB Burning Tool v2.2.5或v2.2.7&#xff08;晶晨線刷燒錄工具v2.2…

VSCode中結合DeepSeek使用Cline插件的感受

前言 聽網上有傳言說AI智能插件Cline非常的好用&#xff0c;而且相對Cursor而言還是免費的&#xff0c;捆綁的大模型選擇也比較的廣泛。所以&#xff0c;特意安裝試用了一下。 我的采用IDE是VSCode&#xff0c;捆綁的大模型是最近比較火的DeepSeek。總體使用下來感覺非常的棒。…

藍橋云客--破譯密碼

5.破譯密碼【算法賽】 - 藍橋云課 問題描述 在近期舉辦的藍橋杯競賽中&#xff0c;誕生了一場激動人心的雙人破譯挑戰。比賽的主辦方準備了N塊神秘的密碼芯片&#xff0c;參賽隊伍需要在這場智力競賽中展示團隊合作的默契與效率。每個隊伍需選出一位破譯者與一位傳輸者&#…

中國移動啟動數字鄉村“五新升級”:年底前,行政村5G覆蓋達95%

大灣區經濟網品牌觀察報道&#xff0c;近日&#xff0c;在國家全面推進鄉村振興的戰略背景下&#xff0c;中國移動近日發布數字鄉村升級行動計劃&#xff0c;以“AI大模型數智化平臺”為核心引擎&#xff0c;圍繞“五新升級”構建“兩個新型”信息服務體系。 一、數字基建筑基&…

智慧節能雙突破 強力巨彩谷亞VK系列刷新LED屏使用體驗

當前全球節能減排趨勢明顯&#xff0c;LED節能屏作為顯示技術的佼佼者&#xff0c;正逐漸成為市場的新寵。強力巨彩谷亞萬境VK系列節能智慧屏憑借三重技術保障、四大智能設計以及大師臻彩畫質&#xff0c;在實現節能效果的同時&#xff0c;更在智慧顯示領域樹立新的標桿。   …

Apache 配置負載均衡詳解(含配置示例)

Apache 是互聯網上最受歡迎的 Web 服務器之一。除了基本的網頁服務&#xff0c;它還能通過模塊擴展出豐富的功能。其中一個重要用途就是將 Apache 配置成負載均衡器&#xff0c;用于在多個后端服務器之間分配流量&#xff0c;提升網站的性能和穩定性。Google Gemini中國版調用G…

GESP:2025-3月等級8-T1-上學

時間限制 : 1 秒 內存限制 : 128 MB C 城可以視為由 n個結點與 m條邊組成的無向圖。這些結點依次以1,2,....n標號&#xff0c;邊依次以 1,2...m標號。第i條邊&#xff08;1<i<m &#xff09;連接編號為ui 與vi的結點&#xff0c;長度為li米。 小 A 的學校坐落在 C 城中…

Nginx介紹及使用

1.Nginx介紹 Nginx是一款開源的、高性能的HTTP和反向代理服務器 1.正向代理和反向代理 正向代理&#xff08;代理客戶端&#xff09;是一種位于客戶端和目標服務器之間的中間服務器。客戶端通過正向代理服務器向目標服務器發送請求&#xff0c;代理服務器將請求轉發給目標服…

復古未來主義屏幕輝光像素化顯示器反烏托邦效果PS(PSD)設計模板樣機 Analog Retro-Futuristic Monitor Effect

這款模擬復古未來主義顯示器效果直接取材于 90 年代賽博朋克電影中的黑客巢穴&#xff0c;將粗糙的屏幕輝光和像素化的魅力強勢回歸。它精準地模仿了老式陰極射線管顯示器&#xff0c;能將任何圖像變成故障頻出的監控畫面或高風險的指揮中心用戶界面。和……在一起 2 個完全可編…

[巴黎高師課程] 同步反應式系統(2024-2025)第三課 - Kind 2: 基于SMT的Lustre模型檢查器

在2024-2025學期的巴黎高師同步反應式系統(2024-2025)第三課中&#xff0c;詳細討論了基于SMT的Lustre模型檢查器Kind 2的工作。本文將提供對Kind 2的介紹。對課程的詳細內容&#xff0c;可參考同步反應式系統 簡介 本節課討論了基于SMT&#xff08;Satisfiability Modulo The…

軌道交通裝備三維檢測與輕量化設計

地鐵車身與車燈部件作為軌道交通裝備的核心組成部分&#xff0c;其制造精度和性能要求極高。由于它們體積龐大、曲面復雜&#xff0c;傳統檢測方法在面對這些大型、復雜部件時&#xff0c;不僅耗時費力&#xff0c;而且難以實現全面、精確的測量&#xff0c;難以滿足高效、準確…

2025大唐杯仿真1——車聯網

車聯網 V2N是指車輛與網絡 Uu接口是用戶設備&#xff08;UE&#xff09;與基站之間的通信接口&#xff0c;用于終端和基站之間的通信 Uu接口可用的是N41頻段&#xff0c;歸屬中國移動 車輛間交互是V2V&#xff0c;頻段是PCS PC5接口是一種用于設備間直接通信&#xff08;D2D…

網絡編程—TCP/IP模型(TCP協議)

上篇文章&#xff1a; 網絡編程—TCP/IP模型&#xff08;UDP協議與自定義協議&#xff09;https://blog.csdn.net/sniper_fandc/article/details/146923934?fromshareblogdetail&sharetypeblogdetail&sharerId146923934&sharereferPC&sharesourcesniper_fand…

python logging模塊

以下是 Python 中 logging 模塊的基礎使用示例和配置說明: 簡單配置版(適合快速使用) import logging as log# 基礎配置(輸出到控制臺) log.basicConfig(level=log.DEBUG, # 設置最低日志級別format=%(asctime)s - %(name)s - %(levelname)s - %(message)s

HikariCP 源碼核心設計解析與 ZKmall開源商城場景調優實踐

HikariCP 作為 Spring Boot 默認數據庫連接池&#xff0c;其高性能源于獨特的無鎖設計、輕量級數據結構和精細化生命周期管理。以下從源碼解析與 ZKmall開源商城性能調優兩個維度展開&#xff1a; 一、HikariCP 源碼核心設計解析 ?無鎖并發控制與 ConcurrentBag 容器 ?Concur…

【模型量化】GPTQ 與 AutoGPTQ

GPTQ是一種用于類GPT線性最小二乘法的量化方法&#xff0c;它使用基于近似二階信息的一次加權量化。 本文中也展示了如何使用量化模型以及如何量化自己的模型AutoGPTQ。 AutoGPTQ&#xff1a;一個易于使用的LLM量化包&#xff0c;帶有用戶友好的API&#xff0c;基于GPTQ算法(僅…