難度參考
????????難度:簡(jiǎn)單
? ? ? ? 分類(lèi):字符串
? ? ? ? 難度與分類(lèi)由我所參與的培訓(xùn)課程提供,但需要注意的是,難度與分類(lèi)僅供參考。以下內(nèi)容均為個(gè)人筆記,旨在督促自己認(rèn)真學(xué)習(xí)。
題目
????????給定一個(gè)字符串S,它包含小寫(xiě)字母和數(shù)字字符,請(qǐng)編寫(xiě)一個(gè)函數(shù),將字符串中的字母字符保持不變,而將每個(gè)數(shù)字字符替換為number.
????????示例1:
????????輸入:s="a5b"
????????輸出:"anumberb"
????????解釋?zhuān)簩?shù)字5替換成number
思路
????????當(dāng)解決這個(gè)問(wèn)題時(shí),我們的目標(biāo)是遍歷輸入字符串,將其中的數(shù)字字符替換為"number"。下面是一個(gè)簡(jiǎn)單的思路:
- 創(chuàng)建一個(gè)空字符串,用于存儲(chǔ)替換后的結(jié)果。
- 遍歷輸入字符串的每個(gè)字符。
- 對(duì)于每個(gè)字符,檢查是否是數(shù)字字符。
- 如果是數(shù)字字符,則將"number"添加到結(jié)果字符串;否則,將字符本身添加到結(jié)果字符串。
- 返回最終的結(jié)果字符串。
? ? ? ? 有雙指針的做法,但是好像沒(méi)比要,有直接判斷是否為數(shù)字的函數(shù)。
示例
- 輸入字符串: "a5b"
-
遍歷每個(gè)字符:
- 字符 'a' 不是數(shù)字,添加到結(jié)果字符串中。
- 字符 '5' 是數(shù)字,替換為 "number",添加到結(jié)果字符串中。
- 字符 'b' 不是數(shù)字,添加到結(jié)果字符串中。
- 最終結(jié)果: "anumberb"
梳理
????????讓我們解釋一下為什么這樣的代碼能夠?qū)崿F(xiàn)將字符串中的數(shù)字替換為"number"的功能:
-
定義函數(shù)
replaceDigitsWithNumber
:-
replaceDigitsWithNumber
函數(shù)被定義為接受一個(gè)字符串參數(shù)s
,返回一個(gè)字符串。 - 在函數(shù)內(nèi)部,初始化一個(gè)空字符串
result
用于存儲(chǔ)替換后的結(jié)果。
-
-
遍歷輸入字符串的每個(gè)字符:
- 使用
for
循環(huán)遍歷輸入字符串s
中的每個(gè)字符。
- 使用
-
檢查字符是否是數(shù)字:
- 使用
isdigit
函數(shù)檢查當(dāng)前字符是否是數(shù)字。 - 如果是數(shù)字,將 "number" 添加到結(jié)果字符串
result
中。 - 如果不是數(shù)字,將當(dāng)前字符直接添加到結(jié)果字符串
result
中。
- 使用
-
返回結(jié)果字符串:
- 函數(shù)最終返回存儲(chǔ)替換后結(jié)果的字符串
result
。
- 函數(shù)最終返回存儲(chǔ)替換后結(jié)果的字符串
-
主函數(shù)中的調(diào)用:
- 在
main
函數(shù)中,定義了一個(gè)示例輸入字符串input
,并調(diào)用了replaceDigitsWithNumber
函數(shù),將結(jié)果存儲(chǔ)在output
中。
- 在
-
打印輸入和輸出字符串:
- 使用
cout
打印輸入字符串和替換后的輸出字符串。
- 使用
-
返回程序執(zhí)行成功:
-
main
函數(shù)返回 0,表示程序成功執(zhí)行。
-
????????總體來(lái)說(shuō),這個(gè)代碼的核心是利用循環(huán)遍歷輸入字符串,對(duì)每個(gè)字符進(jìn)行判斷,如果是數(shù)字則替換為"number",最終返回替換后的字符串。這是通過(guò)字符串的拼接和條件判斷來(lái)實(shí)現(xiàn)的。
代碼
#include <iostream>
#include <string>
// 定義函數(shù),將字符串中的數(shù)字替換為"number"
string replaceDigitsWithNumber(const string& s) {
// 存儲(chǔ)替換后的結(jié)果字符串
string result;
// 遍歷輸入字符串的每個(gè)字符
for (char c : s) {
// 如果當(dāng)前字符是數(shù)字,則將"number"添加到結(jié)果字符串
if (isdigit(c)) {
result += "number";
} else {
// 否則,將當(dāng)前字符添加到結(jié)果字符串
result += c;
}
}
// 返回替換后的結(jié)果字符串
return result;
}
// 主函數(shù)
int main() {
// 示例輸入字符串
string input = "a5b";
// 調(diào)用替換函數(shù),得到輸出字符串
string output = replaceDigitsWithNumber(input);
// 打印輸入和輸出字符串
cout << "輸入: " << input << endl;
cout << "輸出: " << output << endl;
// 返回程序執(zhí)行成功
return 0;
}
????????時(shí)間復(fù)雜度O(n)。
????????空間復(fù)雜度O(n)。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-829812.html
打卡
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-829812.html
到了這里,關(guān)于算法練習(xí)-替換數(shù)字(思路+流程圖+代碼)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!