描述
判断短字符串S中的所有字符是否在长字符串T中全部出现。
请注意本题有多组样例输入。
数据范围:1≤len(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²),日后有待完善;
②现在写代码,每一步注释都能够写得很清楚,个人看自己的代码逻辑还是很清晰的,可读性比较强,进步很明显;
③当前帖子仅供自我精进、学习使用,有不足之处欢迎指正;