単純法
#include "MicroBit.h" MicroBit uBit; uint8_t AinB(ManagedString A, ManagedString B){ int ALen = A.length(); int BLen = B.length(); int difLen = BLen - ALen; // 文字列Bを左(i)から文字列Aの文字数ぶん(ALen)ずつ順番に見ていって、 uint8_t isFound = 0; for(int i=0; i<=difLen; i++){ if(A==B.substring(i, ALen)){ isFound = 1; break; } } // 文字列Aが見つかったら1を返し、 // 最後まで見つからなかったら0を返す。 return isFound ? 1 : 0; } ////////// // test // ////////// int main(void){ printf("%d\n", AinB("OK", "OK")); // 1 printf("%d\n", AinB("OK", "KO")); // 0 printf("%d\n", AinB("OK", "OreookdadaktetfK")); // 0 printf("%d\n", AinB("OK", "OKedafdfadfadftr")); // 1 printf("%d\n", AinB("OK", "treookdaOKdaktet")); // 1 printf("%d\n", AinB("OK", "treookdadaktetOK")); // 1 printf("%d\n", AinB("OK", "KreookdadaktetdO")); // 0 printf("%d\n", AinB("KOeookdadaktetdO", "OK")); // 0 release_fiber(); return 0; }
実行結果:
strstr()函数を使う方法(string.hのインクルードは不要)
//#include<string.h> #include "MicroBit.h" MicroBit uBit; uint8_t AinB(char A[], char B[]){ return strstr(B, A)!=NULL ? 1 : 0; } ////////// // test // ////////// int main(void){ printf("%d\n", AinB("OK", "OK")); // 1 printf("%d\n", AinB("OK", "KO")); // 0 printf("%d\n", AinB("OK", "OreookdadaktetfK")); // 0 printf("%d\n", AinB("OK", "OKedafdfadfadftr")); // 1 printf("%d\n", AinB("OK", "treookdaOKdaktet")); // 1 printf("%d\n", AinB("OK", "treookdadaktetOK")); // 1 printf("%d\n", AinB("OK", "KreookdadaktetdO")); // 0 printf("%d\n", AinB("KOeookdadaktetdO", "OK")); // 0 release_fiber(); return 0; }
実行結果:
Pythonの場合
in
だけでよい。
from microbit import * def AinB(A, B): return A in B ######## # test # ######## if __name__ == "__main__": print(AinB("OK", "OK")) # 1 print(AinB("OK", "KO")) # 0 print(AinB("OK", "OreookdadaktetfK")) # 0 print(AinB("OK", "OKedafdfadfadftr")) # 1 print(AinB("OK", "treookdaOKdaktet")) # 1 print(AinB("OK", "treookdadaktetOK")) # 1 print(AinB("OK", "KreookdadaktetdO")) # 0 print(AinB("KOeookdadaktetdO", "OK")) # 0
実行結果: