2020年5月13日 星期三

[程式設計工法] C/ C++,麗山高中資科教甄109,專業檢定:子字串

C++,麗山高中資科教甄109,專業檢定:子字串


FB2http://gg.gg/TedLeeMicrobitFB/
URL2http://gg.gg/TedLeeMicrobit/

Line:ted2016.kpvs
Email:Lct4246@gmail.com
FB1http://gg.gg/TedLeeFB/
Bloghttp://gg.gg/TedLeeBlog/
URL1http://gg.gg/TedLeeURL/

May. 13, 2020
88x31.png[1]

問題解決(Problem Solving之逻輯思維 =
心法: 程式設計哲思(Philosophical Thinking for Programming) +
技法:程式設計工法(Skills for Programming)

子字串(substrings) 找出字串1中是否包含子字串2,子字串2的每個元素需依序出現在字串1中,例如:str1 = "AbcYmn",str2 = "AY",str1 Ê str2。

    解析:
    • 直接run結果建立直觀:
    • Idea:從小例子觀察出規律(regularity) Þ 把str2中的每個元素(i-loop)和str1比对(j-loop),当对到的次數和str2長度相等時(都有match到)就為尋獲
    • 此題包含迴圈控制(loop control)search problem

    #include <iostream>
    using namespace std;

    int main(void) {
    char str1[]={'A', 'b', 'c', 'Y', 'm', 'n'};
    //char str2[]={'A', 'Y'};
    char str2[]={'b', 'c', 'Y'};

    int i=0, j=0;
    int found=0;

    for (i=0; i<3; i++) {
    for (j=0; j<6; j++) { //把str2[]內的元素和str1[]相比
    if (str2[i] == str1[j]) {
    found++;
    break;
    }
    }
    }

    if (found==3) {
    cout << "Found.\n";
    } else {
    cout << "Not found.\n";
    }
    return 0;
    }

    参考資料
    1. 六種授權條款

    沒有留言: