描述

判断短字符串S中的所有字符是否在长字符串T中全部出现。
请注意本题有多组样例输入。
数据范围:1len(S),len(T)200 
进阶:时间复杂度:O(n) ,空间复杂度:O(n) 

输入描述:

输入两个字符串。第一个为短字符串,第二个为长字符串。两个字符串均由小写字母组成。

输出描述:

如果短字符串的所有字符均在长字符串中出现过,则输出字符串"true"。否则输出字符串"false"。

示例1

输入:
bc
abc
输出:
true
说明:
其中abc含有bc,输出"true"
代码部分:
#include <stdio.h>
#include <string.h>
//以下是Senky的代码:
//算法:循环遍历每一个字符
int main() {
    int m = 0;
    int n = 0;
    char s[200];//短字符串
    char t[200];//长字符串
    scanf("%s", s);//输入短字符串
    scanf("%s", t);//输入长字符串
    int flag = 0;//在s中一次寻找字符的结果,初始化为0
    int i = 0;//指向短字符串的指针
    int j = 0;//指向长字符串的指针
    while (i < strlen(s)) {//逐个检查s内的字符串
        flag = 0; //每次进入flag为0
        for (j = 0; j < strlen(t); j++) {
            if (s[i] == t[j]) {//相等则s中的字符存在t中
                i++;//寻找s中的下一个字符
                flag = 1; //s中的字符在t中找到了,flag为1
                break;//本字符找到了就跳出for循环
            }
        }
        if (0 == flag) {
            break;//如果本次没找到,则跳出while循环说明不符合
        }
    }

    if (flag) {
        printf("true");
    } else {
        printf("false");
    }
    
    return 0;//编辑于2022/10/09
}
总结:
①该算法还不是最优的算法,时间复杂度为O(n²),日后有待完善;
②现在写代码,每一步注释都能够写得很清楚,个人看自己的代码逻辑还是很清晰的,可读性比较强,进步很明显;
③当前帖子仅供自我精进、学习使用,有不足之处欢迎指正;