2023年7月31日 星期一

Python 及 C++ 字串處理

作者:王一哲
日期:2023年7月31日



前言


以下的內容包含
  1. 取得字串長度
  2. 判斷字串是否為空字串
  3. 比較字串內容是否相等
  4. 複製字串
  5. 連接字串
  6. 改變字串內容



取得字串長度


Python 語法


語法為
len(字串名稱)
回傳值格式為 int,例如
s = "abcde"
print(len(s))
印出的值為5。

C++ 語法


需要先引入函式庫 string,取得字串長度的語法有兩種
字串名稱.size();
字串名稱.length();
回傳值格式為沒有正負號的整數 sizt_t,例如
#include <iostream>
#include <string>
using namespace std;

int main() {
    string s = "abcde";
    cout << s.size() << endl;
    cout << s.length() << endl;
    return 0;
}
兩種寫法印出的值都是5。接下來的文章中,C++ 的程式碼都會省略 int main() 以外的部分。


2023年7月29日 星期六

Python 及 C++ 遍歷字串

作者:王一哲
日期:2023年7月29日



前言


由於我大約一年前開始寫 APCS、ZeroJudge 的題目,最近又開始寫 LeetCode,我會先用比較熟悉的 Python 解題,確定程式碼的邏輯正確後,再用 C++ 重寫一遍。在重寫的過程中,因為我對於 C++ 的語法不太熟悉,經常需要上網找資料,沒想到現在 C++ 多了很多方便的工具,甚至有些寫法跟 Python 很像。

遍歷字串是指依序讀取字串中的字元並做一些處理,例如將每個字元依照 ASCII 編碼加1,再儲存到另一個字串中,以下是 Python 及 C++ 的寫法。

Python 語法



方法1:使用 for 迴圈及索引值



Python 中的字串類似由字元組成的陣列,索引值由 0 開始,可以用索引值取出字串中的內容。方法1是用 for 迴圈,將變數 i 的值依序由 0、1、2、... 代入,直到(字串長度 - 1)為止,再用 s[i] 就可以依序讀取字串中的字元。
s = "Hello World!"
s2 = ""

for i in range(len(s)):
    s2 += chr(ord(s[i])+1)
print(s2)


方法2:使用 for 迴圈並暫存字元



Python 的 for 迴圈有一種特別的用法,可以由 in 後方的物件依序取出元素,例如第3行,就是將字串 s 中的字元依序取出並暫存於變數 c,變數 c 在離開 for 迴圈時就會消失。
s = "Hello World!"
s2 = ""
for c in s:
    s2 += chr(ord(c)+1)
print(s2)


以上兩種寫法印出的字串 s2 內容皆為Ifmmp!Xpsme"